Android - 即使应用程序被杀死或设备重新启动,也可以在后台运行服务

4
我希望即使我的应用程序被杀死,也能保持服务在后台运行。我正在使用android.intent.action.USER_PRESENT事件,但是只有在屏幕解锁时服务才会运行。我尝试了android.intent.action.BOOT_COMPLETED,但需要在下载应用程序后至少重新启动一次手机。
理想情况下,我会每隔X分钟启动我的服务,例如使用ACTION_TIME_TICK。然后在启动服务之前检查条件(电池电量,网络连接等)。
问题在于这种事件无法在manifest.xml中声明和监听,而是在Activity中实现,这意味着应用程序必须处于“活动”状态。
是否有办法仍然实现我想要的功能?

1
尝试访问此网址:https://dev59.com/YmUo5IYBdhLWcg3wzCBr,由于 Android 的更新,我不知道它现在是否有效,你可能需要将应用程序安装为系统应用以使其正常工作。 - pcharb
1个回答

2

请看一下 AlarmManager,您可以使用它来确保您的服务处于活动状态,如果不是,则根据需要启动/重新启动。

您可以在应用程序安装后第一次打开时注册AlarmManager。从那时起,如果用户重新启动设备,请使用另一个(第二个)引导服务向AlarmManager注册您的服务,并监听android.intent.action.BOOT_COMPLETED

在考虑设备休眠以及后台服务中所做工作的数量/种类时,可能还有其他注意事项也请参考此库和注释

AlarmManager可以持续确保您的后台服务处于良好状态。


谢谢您的评论,但似乎AlarmManager也需要从活动中设置。 - keepthepeach
所以你希望在用户安装您的apk之后立即启动后台服务,但不启动/打开应用程序(尚未杀死)。 - ashoke
理论上是可以的。我不介意用户至少打开一次应用程序,但我希望能够定期在后台启动服务,即使被杀死,就像我使用 USER_PRESENT 一样。 - keepthepeach
打开一次后,但在重启后,您希望它自动启动,无需任何其他操作或进一步打开。 - ashoke
是的,我知道这并不被推荐,但我想这样做。 - keepthepeach

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接