我可以通过"高级任务杀手"检测我的服务何时被杀死

use*_*574 7 android kill task geolocation ondestroy

我的应用运行地理定位服务,用户可以通过toggleButton激活或停用.要检查服务的状态,我在共享首选项中写了一个布尔值.由于我的服务的onDestroy(),我听服务的开始和结束.

我的问题是:当用户使用"高级任务杀手"杀死服务时,我不知道服务被杀死了,onDestroy没有被调用!

我该怎么处理?

谢谢你的帮助.

弗洛朗

Joh*_*hey 2

当一个进程被杀死时(使用 ATK 或 android 自己的强制停止按钮,或者这里的函数),它会立即从内存中清除(如果内核允许的话)。这意味着没有机会运行任何额外的代码,这意味着没有办法真正处理发送到您的应用程序的“强制终止”。

如果你想解决这个问题,你有两个选择(我能想到的):

  1. 发布免责声明,告知用户将您的应用添加到 ATK 的“忽略”列表中。
  2. 找到一些不依赖 onDestroy() 方法来维护功能的方法。

编辑:

如果您想从当前正在运行的进程列表中检查您的进程,请查看getRunningAppProcesses()