我的应用程序运行地理定位服务,用户可以通过切换按钮激活或停用该服务。为了检查服务的状态,我在共享首选项中写了一个 bool 值。由于我的服务的 onDestroy() ,我听到了服务的开始和结束。
我的问题是:当用户用“高级任务 killer ”杀死服务时,我不知道服务被杀死了,onDestroy 没有被调用!
我该如何处理?
感谢您的帮助。
佛罗伦萨
最佳答案
当进程被终止时(使用 ATK 或 android 自己的强制停止按钮,或函数 here ),它会立即从内存中清除(如果内核允许的话)。这意味着任何其他代码都没有机会运行,这意味着没有办法真正处理发送到您的应用程序的“强制终止”。
如果你想处理这个,你有 2 个选项(我能想到):
- 发布免责声明,告诉用户将您的应用添加到 ATK 的“忽略”列表中。
- 找到一些不依赖 onDestroy() 方法来维护功能的方法。
编辑:
如果您想从当前正在运行的进程列表中检查您的进程,请查看 getRunningAppProcesses() .
关于android - 我可以检测到我的服务何时被 "Advanced Task Killer"杀死吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5862045/