我正在尝试实现大致如下所示的服务关系:
{ACTIVITY} -> {SERVICE1} -> {SERVICE2}
ACTIVITY启动SERVICE1,然后启动SERVICE2。SERVICE2可以自行关闭非常重要。如果SERVICE1崩溃,SERVICE2应该有机会完全自行关闭。我已经实现了对SERVICE2使用远程进程,因此,如果SERVICE1崩溃,它可以自行关闭。
棘手的部分是用户是否通过应用程序管理器强制关闭。
我了解没有解决方案是100%。但!我注意到Yahoo Weather应用程序能够在完全独立的应用程序行中运行他们称为“看门狗”的东西。杀死主要的Yahoo Weather应用程序不会杀死Watchdog应用程序。这是什么巫毒?我该如何复制类似的东西?
雅虎应用程序的图像:
https://dl.dropboxusercontent.com/u/2193687/device-2014-05-22-151216.png https://dl.dropboxusercontent.com/u/2193687/device-2014-05-22-151236.png
(将评论中的对话转换为答案)
通常,“看门狗服务”是指在单独进程中运行的服务,如果该服务崩溃或用户强行关闭该服务,则该服务将尝试重新启动其他一些目标服务。
另一个类似的技巧是向进行注册,AlarmManager
以广播会重新启动您的应用/服务的定期意图。
在此过程中的某个地方(我认为是HoneyComb),Android更改了其安全模型。系统可能会将应用程序标记为“不良”,除非用户手动启动它们,否则它们不会再次启动它们。如果应用崩溃次数过多或用户强行将其关闭,则该应用将变为“不良”状态。
这包括接收到ON_BOOT_COMPLETED
意图的应用程序-如果这样被标记为不良,它们将不会重新启动。
因此,“看门狗”不再像以前那样有用(有些人可能会说烦人,或耗尽电池)。对于偶尔崩溃的应用程序可能仍然有用
我最初建议使用远程过程作为完成此任务的最佳方法。然后,我看到您已经完成了此操作,并且可以正常工作。
不幸的是,如果已手动停止该服务,它将仍然无法重新启动该服务。雅虎的WeatherServiceWatchdog似乎也无法重新启动主要的Weather服务。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句