【发布时间】:2012-12-16 18:51:00
【问题描述】:
当我使用正在运行的服务选项卡下的停止按钮停止服务时,会调用 onDestroy() 方法。
但是当我强制停止应用程序时,永远不会调用 onDestroy()。
对此有何解释?
或者在强制停止时触发 onDestroy() 的解决方案?
谢谢!
【问题讨论】:
标签: android
当我使用正在运行的服务选项卡下的停止按钮停止服务时,会调用 onDestroy() 方法。
但是当我强制停止应用程序时,永远不会调用 onDestroy()。
对此有何解释?
或者在强制停止时触发 onDestroy() 的解决方案?
谢谢!
【问题讨论】:
标签: android
当您强制停止应用程序时,就会发生这种情况 - 强制停止。没有警告,没有回调,只是停止了。整个进程被杀死,并且没有任何正在运行的组件(活动、服务等)被发出任何警告。
绝对不保证onDestroy()会被调用。将任何应用程序关键代码移至onPause(),在大多数情况下都会调用。
【讨论】:
一旦创建了活动,
onPause()是保证在进程被杀死之前被调用的最后一个方法...onStop()和onDestroy()可能不会被调用。因此,您应该使用onPause()将关键的持久数据(例如用户编辑)写入存储。
重申这一点,强制停止并不是为了优雅地退出应用程序。如果您有必须在每次应用完成时运行的关键代码,您需要在 onPause() 中运行它。
【讨论】:
当应用程序被强制停止时,Process.killProcess() 会被调用,但不会调用 onDestroy() 函数。通过这个链接。你会有一些想法。 Android force Stop callback to application?
【讨论】:
我假设您有要在 onDestroy() 中执行的代码,指的是您的行:
“或者在强制停止时触发 onDestroy() 的解决方案?”
Service 方法 public void onTaskRemoved(Intent rootIntent) 是您正在寻找的,它将在应用程序被强制停止时调用。
【讨论】: