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