当 android 系统终止我的应用程序时,如何使我的后台服务保持活动状态?
how to keep my background service active when android system kills my app?
我有一个后台服务,它在后台运行以跟踪屏幕打开和关闭事件。它开始如下:
Intent intentService = new Intent(context, UnlockdService.class);
context.startService(intentService);
并且在 onStartCommand 方法中返回 Service.START_REDELIVER_INTENT
。但是,当 android 系统终止应用程序时,该线程也会终止。
我该如何预防?
我认为使用 BroadcastReceiver 而不是服务是更好的解决方案。在你的 onReceive 中,你可以开始你的服务来完成它的工作,然后服务可以自行终止——如果你的工作是一次性的,也许你可以使用 IntentService。
如果您仍然想要一个服务,您可以通过在通知栏中设置一个永久通知来降低它被杀死的可能性,但从用户的角度来看这可能是不好的。我强烈建议走广播接收器路线。
解决方案非常简单:从 onStartCommand()
返回 START_STICKY
完成了工作。
我有一个后台服务,它在后台运行以跟踪屏幕打开和关闭事件。它开始如下:
Intent intentService = new Intent(context, UnlockdService.class);
context.startService(intentService);
并且在 onStartCommand 方法中返回 Service.START_REDELIVER_INTENT
。但是,当 android 系统终止应用程序时,该线程也会终止。
我该如何预防?
我认为使用 BroadcastReceiver 而不是服务是更好的解决方案。在你的 onReceive 中,你可以开始你的服务来完成它的工作,然后服务可以自行终止——如果你的工作是一次性的,也许你可以使用 IntentService。
如果您仍然想要一个服务,您可以通过在通知栏中设置一个永久通知来降低它被杀死的可能性,但从用户的角度来看这可能是不好的。我强烈建议走广播接收器路线。
解决方案非常简单:从 onStartCommand()
返回 START_STICKY
完成了工作。