{SERVICE1} -> {SERVICE2} ACTIVITY 启动 SERVICE1,然后启动 SERVICE2。 SERVI-6ren">
gpt4 book ai didi

android - 如何实现一个 "watchdog"服务

转载 作者:搜寻专家 更新时间:2023-11-01 08:50:37 25 4
gpt4 key购买 nike

我正在尝试实现大致如下所示的服务关系:

{ACTIVITY} -> {SERVICE1} -> {SERVICE2}

ACTIVITY 启动 SERVICE1,然后启动 SERVICE2。 SERVICE2 可以自行关闭是非常非常重要的。如果 SERVICE1 崩溃,SERVICE2 应该有机会彻底关闭自己。我已经实现了对 SERVICE2 使用远程进程,因此如果 SERVICE1 崩溃,它可以自行关闭。

棘手的部分是用户是否通过应用程序管理器强制关闭。

我知道没有 100% 的解决方案。但!我注意到 Yahoo Weather 应用程序能够在完全独立的应用程序行中运行他们称之为“看门狗”的东西。关闭主要的 Yahoo 天气应用程序并不会关闭 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 注册以广播一个周期性的 Intent ,该 Intent 将重启您的应用程序/服务。

在这个过程中(我认为是 HoneyComb),Android 改变了他们的安全模型。应用程序可能会被系统标记为“不良”,直到用户手动启动它们才会再次启动它们。如果一个应用经常崩溃,或者用户强行关闭它,它就会变得“糟糕”。

这包括接收到 ON_BOOT_COMPLETED Intent 的应用程序 - 如果它们被标记为这样的错误,它们将不会重新启动。

所以“看门狗”不再像以前那样有用(有些人可能会说烦人,或者耗电)。对于偶尔崩溃的应用程序,它可能仍然有用


远程进程

我最初推荐远程进程作为实现此目的的最佳方式。然后我看到你已经这样做了,而且它有效。

不幸的是,如果它已被手动停止,这仍然无法重新启动该服务。雅虎的 WeatherServiceWatchdog 似乎也无法重启主要的天气服务。

关于android - 如何实现一个 "watchdog"服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23816319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com