我希望在后台运行服务,即使我的应用程序被杀死了。我使用android.intent.action.USER_PRESENT
事件,但该服务仅在屏幕解锁时运行。我尝试了android.intent.action.BOOT_COMPLETED
,但下载应用后需要至少重启一次手机。
理想情况下,我会在所有X分钟内启动我的服务,例如使用ACTION_TIME_TICK
。然后在开始维修之前检查条件(电池电量,网络连接......)。
问题是此类事件无法从manifest.xml
声明和收听,而是在活动中声明,这意味着该应用仍然存在。
有没有办法做我想做的事呢?
答案 0 :(得分:2)
使用look at AlarmManager
,您可以使用它来确保您的服务还活着,如果没有,请根据需要启动/重启。
您可以在安装后第一次打开应用程序时注册AlarmManager。从那时起,如果用户重新启动,请使用另一个(第二个)侦听AlarmManager
的引导服务,使用android.intent.action.BOOT_COMPLETED
注册您的服务。
可能还有其他considerations with device sleep,以及您在后台服务中执行的工作量/种类,take a look at this lib and notes as well
AlarmManager
可以持续确保您的后台服务健康。