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

时间:2011-05-02 20:20:31

标签: android geolocation task kill ondestroy

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

我的问题是:当用户使用“高级任务杀手”终止服务时,我无法知道该服务被终止,onDestroy未被调用!

我该如何处理?

感谢您的帮助。

Florent

2 个答案:

答案 0 :(得分:2)

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

如果你想处理这个问题,你有两个选择(我能想到):

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

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

答案 1 :(得分:-1)

onDestroy()

如果要重新启动该服务,可以在onDestroy()

中重新启动