java使服务始终运行,即使在重新启动后也是如此
我已经执行了START_STICKY命令,但是服务在几个小时后被终止。我想做的是让服务始终在后台运行,并在设备重新启动时重新启动。我可以像这样用onDestroy方法重新启动服务吗?还是有更方便的方法
@Override
public void onDestroy() {
Stop();
Toast.makeText(this, "My Service Stopped", Toast.LENGTH_LONG).show();
Intent i= new Intent(getApplicationContext(), MyService.class);
startService(i);
}
# 1 楼答案
为了确保您的服务在启动数小时后仍在运行,您必须使用
AlarmManager
,即使应用程序被终止,它也会在指定的周期内重复运行。您将要做的是注册一个PendingIntent
以启动AlarmManager
,它将被BroadcastReceiver
接收,并在BroadcastReceiver
中检查您的服务是否正在运行。如果正在运行,则不执行任何操作,如果不执行,则启动服务为此,您必须在清单中授予此权限:
然后,您必须创建一个自定义
BroadcastReceiver
,它将检查要激发的意图,即Action.BOOT_COMPLETED
您应该声明您的BroadcastReceiver在Android清单中捕获上述意图,如下所示:
现在,您可以在
BroadcastReceiver
类中初始化AlarmManager,也可以编写代码立即启动服务有关AlarmManager的信息,请参见here