android - 我可以检测到我的服务何时被 "Advanced Task Killer"杀死吗

标签 android geolocation task kill ondestroy

我的应用程序运行地理定位服务,用户可以通过切换按钮激活或停用该服务。为了检查服务的状态,我在共享首选项中写了一个 bool 值。由于我的服务的 onDestroy() ,我听到了服务的开始和结束。

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

我该如何处理?

感谢您的帮助。

佛罗伦萨

最佳答案

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

如果你想处理这个,你有 2 个选项(我能想到):

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

编辑:

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

关于android - 我可以检测到我的服务何时被 "Advanced Task Killer"杀死吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5862045/

相关文章:

安卓 SQLite fts3 : What should I insert: null values OR empty strings?

javascript - 如何强制 HTML5 地理定位失败?

iOS:后台任务长度问题设计计时器应用程序+ Apple Watch注意事项

android - 使用起始值开始新 Activity

java - Android Studio 3.1.3中的构建gradle失败

java - android listview 的详细 View

android - 地理围栏在 Android 中完全无法使用吗?

android - 计算两个位置之间的方位角(纬度、经度)

C# 命名任务 正确的方法是什么?

python - 应用程序引擎(gae)、python、ndb、延迟库或任务链、cron 作业还是全部?