2014-10-06 63 views
2

我想保持服务在后台运行,即使我的应用程序被终止。我正在使用android.intent.action.USER_PRESENT事件,但该服务仅在屏幕解锁时运行。我试过android.intent.action.BOOT_COMPLETED,但它需要在下载应用程序后至少重新启动手机一次。Android - 在后台运行服务,即使应用程序死亡或设备重新启动

理想情况下,我会开始我的服务全部X分钟,例如使用ACTION_TIME_TICK。然后在开始服务之前检查条件(电池电量,网络连接...)。

问题是这样的事件不能从manifest.xml声明和监听,而是在一个Activity中,这意味着应用程序是'活着的'。

有没有办法做我想要的呢?

+1

试试这个http://stackoverflow.com/questions/15758980/android-service-need-to-run-alwaysnever-pause-or-stop我不知道现在是否会因为更新而有效已经在android上完成了,你可能不得不安装你的应用程序作为系统应用程序来获得这个 – pcharb 2014-10-06 04:48:34

回答

2

需要一个look at AlarmManager,您可以使用它来确保您的服务仍然有效,如果没有,请根据需要启动/重新启动。

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

可能有其他considerations with device sleep,且金额/这类工作你在你的后台服务做,take a look at this lib and notes as well

AlarmManager能够持续确保您的后台服务是健康的。

+0

感谢您的评论,但它似乎也需要从一个活动设置AlarmManager。 – keepthepeach 2014-10-06 05:13:52

+0

所以你想要一个后台服务,用户安装你的apk后立即启动,但不启动/打开应用程序(没有杀死,但) – ashoke 2014-10-06 05:34:12

+0

理想情况下,是的。我不介意用户是否必须至少启动一次应用程序,但是我希望在后台定期启动服务,即使遇害,就像我在USER_PRESENT – keepthepeach 2014-10-06 05:40:25

相关问题