相关疑难解决方法(0)

Android服务需要始终运行(从不暂停或停止)

我创建了一项服务,并希望始终运行此服务,直到我的手机重新启动或强制关闭.该服务应该在后台运行.

创建的服务和启动服务的示例代码:

启动服务:

Intent service = new Intent(getApplicationContext(), MyService.class);
getApplicationContext().startService(service);
Run Code Online (Sandbox Code Playgroud)

服务:

public class MyService extends Service {

    @Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        // TODO do something useful
        HFLAG = true;
        //smsHandler.sendEmptyMessageDelayed(DISPLAY_DATA, 1000);
        return Service.START_NOT_STICKY;
    }

    @Override
    public IBinder onBind(Intent intent) {
        // TODO for communication return IBinder implementation
        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

清单声明:

<service
    android:name=".MyService"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name" >
</service>
Run Code Online (Sandbox Code Playgroud)

是否可以像应用程序暂停和其他任何操作一样运行此服务.一段时间后,我的应用程序暂停,服务也暂停或停止.那么如何在后台运行此服务并始终如此.

java service android

67
推荐指数
2
解决办法
10万
查看次数

如何在后台运行Android应用程序?

此代码将在启动系统后自动运行应用程序,但按下后退按钮后应用程序将关闭.

如果应用程序通过单击它的图标正常运行.即使按下后退按钮或运行其他应用程序,它也会继续运行.

public class AutoBoot extends BroadcastReceiver {
    @Override        
    public void onReceive(Context context, Intent intent) {                
        Intent i = new Intent(context, MyActivity.class); 
        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);          
    }
}
Run Code Online (Sandbox Code Playgroud)

我的问题是,即使在按下后退按钮或运行其他应用程序后,如何使此自动运行代码继续运行?

android android-service

26
推荐指数
2
解决办法
10万
查看次数

唤醒锁定android服务重复出现

我有这个应用程序需要运行定期发出蜂鸣声的服务(背景).手机需要每隔一分钟发出一声哔哔声,持续5秒钟(在服务中使用了一个处理程序).我已经实现了这项完美的服务,但是当手机进入深度睡眠模式时,此处理程序的执行停止会停止.使用这种从SO问题的答案,我设法利用唤醒锁定并能正常工作.但是当我明确地将手机置于深度睡眠模式时,处理程序停止执行.我在哪里将唤醒锁放在服务中.下面的代码片段.

public class PlaySound extends Service{
PowerManager.WakeLock wl ;
    PowerManager pm;
private SoundManager mSoundManager;
    boolean wakeUpFlag = false;

@Override
    public void onCreate(){
        super.onCreate();
        mSoundManager = new SoundManager();
        mSoundManager.initSounds(getBaseContext());
        mSoundManager.addSound(1, R.raw.sound);
    }
@Override
    public int onStartCommand(Intent intent, int flags, int startId) {
        startservice();
        return START_STICKY;
    }
private void startservice() {
        System.out.println("Started the service");
        timer.scheduleAtFixedRate( new TimerTask() {
            public void run() {
                toastHandler.sendEmptyMessage(0);
            }
        }, 0, 60000);
    }
private final Handler toastHandler = new Handler()
    {
        @Override
        public void handleMessage(Message …
Run Code Online (Sandbox Code Playgroud)

service android handler android-service wakelock

7
推荐指数
2
解决办法
3万
查看次数

屏幕关闭时如何防止媒体播放器停止?

我在一个Music类中的媒体播放器从另一个辅助节点调用Activity.它工作正常.

但是当屏幕熄灭时(通过超时或按钮),音乐停止播放,当回来并尝试关闭活动时,程序进入"应用程序无响应",因为IllegalStateException在查询时如此mediaplayer.isPlaying().

如何在屏幕关闭时阻止媒体播放器停止?

它必须通过服务?

假设答案是肯定的,我试图将Music类转换为服务(见下文).我也加入<service android:enabled="true" android:name=".Music" />Manifest.xml,我正在调用这样的Music类:

startService(new Intent(getBaseContext(), Music.class));
Music track = Music(fileDescriptor);
Run Code Online (Sandbox Code Playgroud)

主Activity中只有2个新行startService(new Intent(getBaseContext(), Music.class));stopService(new Intent(getBaseContext(), Music.class));,以及相应的导入.

但现在我得到InstantiationException错误,因为can't instantiate class在尝试启动服务时.我错过了什么?

这是例外:

E/AndroidRuntime(16642): FATAL EXCEPTION: main
E/AndroidRuntime(16642): java.lang.RuntimeException: Unable to instantiate service com.floritfoto.apps.ave.Music:                                                                             java.lang.InstantiationException: can't instantiate class com.floritfoto.apps.ave.Music; no empty constructor                                                                   
E/AndroidRuntime(16642):    at android.app.ActivityThread.handleCreateService(ActivityThread.java:2249)
E/AndroidRuntime(16642):    at android.app.ActivityThread.access$1600(ActivityThread.java:127)
E/AndroidRuntime(16642):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1213)
E/AndroidRuntime(16642):    at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(16642): …
Run Code Online (Sandbox Code Playgroud)

android screen media-player instantiationexception

6
推荐指数
1
解决办法
1万
查看次数

Android USB主机和设备睡眠

我有一个USB设备,我使用USB主机模式与Android应用程序连接.设备大约每10秒发送一些数据,但在某些情况下(高优先级数据),数据可以随时发送.在Android应用程序端,我有一个使用USB主机模式API读取数据的服务.我的Android应用程序处理数据并将数据写回USB设备.现在一切正常,直到Android设备进入睡眠状态.该服务暂停,所有通信都停止.我知道我可以使用部分唤醒锁来保持CPU运行和通信进行,并且它会对电池产生巨大影响.我有两个问题:

  1. 由于USB设备可以随时发送数据,我真的需要Android服务一直处于活动状态,特别是因为可以随时获得更高优先级的数据.这可能意味着我获得了部分唤醒锁并且永远不会释放它.如果允许的话,没有能够在文档中找到,如果是,除了耗尽电池之外还有什么后果?

  2. USB主机模式API或任何其他API是否提供了不同且可能更好的解决方案?

该应用程序是一个用户有限的自定义应用程序,因此电池耗尽不是一个大问题.我只是想了解是否还有其他问题需要注意,或者是否有更好的方法来做到这一点.

android android-service

5
推荐指数
0
解决办法
2598
查看次数