Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/220.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 手动终止服务后重新启动服务_Android_Android Service - Fatal编程技术网

Android 手动终止服务后重新启动服务

Android 手动终止服务后重新启动服务,android,android-service,Android,Android Service,我想在android中启动服务,如果它被用户手动杀死,我已经读了很多关于这方面的书,这里是我在服务中使用的东西 我的服务正在定期获取当前用户位置,这是一个启动服务。正如我所读到的,whatsapp正在使用GCM再次打开该服务,如果该服务被用户手动终止,因此我也实现了GCM,并启用了该服务 但是如果我手动终止我的服务,那么GCM也会停止(这是一个明显的原因),因此我认为whatsapp正在使用GCM重新启动他们自己的服务,这是一个神话 我已尝试从onDestroy调用startService重新启

我想在android中启动服务,如果它被用户手动杀死,我已经读了很多关于这方面的书,这里是我在服务中使用的东西

我的服务正在定期获取当前用户位置,这是一个启动服务。正如我所读到的,
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是否会保持活动状态以触发此服务?