Android 手动终止服务后重新启动服务
我想在android中启动服务,如果它被用户手动杀死,我已经读了很多关于这方面的书,这里是我在服务中使用的东西 我的服务正在定期获取当前用户位置,这是一个启动服务。正如我所读到的,Android 手动终止服务后重新启动服务,android,android-service,Android,Android Service,我想在android中启动服务,如果它被用户手动杀死,我已经读了很多关于这方面的书,这里是我在服务中使用的东西 我的服务正在定期获取当前用户位置,这是一个启动服务。正如我所读到的,whatsapp正在使用GCM再次打开该服务,如果该服务被用户手动终止,因此我也实现了GCM,并启用了该服务 但是如果我手动终止我的服务,那么GCM也会停止(这是一个明显的原因),因此我认为whatsapp正在使用GCM重新启动他们自己的服务,这是一个神话 我已尝试从onDestroy调用startService重新启
whatsapp
正在使用GCM
再次打开该服务,如果该服务被用户手动终止,因此我也实现了GCM
,并启用了该服务
但是如果我手动终止我的服务,那么GCM
也会停止(这是一个明显的原因),因此我认为whatsapp
正在使用GCM
重新启动他们自己的服务,这是一个神话
我已尝试从onDestroy
调用startService
重新启动该服务,但这也不起作用
我也尝试过使用process属性将服务作为一个单独的进程运行,但并没有效果
那么,如果服务被用户自己杀死,是否还有任何方法可以立即重新启动服务
注意:我已经知道,如果用户手动终止服务,如果服务
START\u STICKY
的话,操作系统会很快自动重新启动它。实际上,什么应用程序服务在任何时候都不会停止,如果任何用户手动停止,它会在很短的时间内启动,因为AlarmManager。使用alarmmanager而不是START_STICKY标志。
您的服务在被用户终止后自动启动。检查链接:
在您的服务中覆盖此方法,希望它能起作用
@Override
public void onTaskRemoved(Intent rootIntent) {
Intent restartService = new Intent(getApplicationContext(),
this.getClass());
restartService.setPackage(getPackageName());
PendingIntent restartServicePI = PendingIntent.getService(
getApplicationContext(), 1, restartService,
PendingIntent.FLAG_ONE_SHOT);
//Restart the service once it has been killed android
AlarmManager alarmService = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE);
alarmService.set(AlarmManager.ELAPSED_REALTIME, SystemClock.elapsedRealtime() +1000, restartServicePI);
}
如果我手动终止服务,我的AlaramManager将如何知道何时重新启动,因为它可能会因应用程序附带的进程而终止?您是否检查了上面的链接示例?有悬而未决的用途。在pending intent中,您必须在服务调用的间隔后设置间隔。如果您将间隔设置为1 mnt,并将alrmmngr.setrepeating(…,PendingEvent)设置为alrmmngr.setrepeating(…,PendingEvent),则在每1 mnt之后设置服务调用。。。请参阅此消息。您认为alarm manager是否会保持活动状态以触发此服务?