12

当我使用 Running Services 选项卡下的停止按钮停止服务时,会调用 onDestroy() 方法。

但是当我强制停止应用程序时,永远不会调用 onDestroy()。

对此有何解释?

或者在强制停止时触发 onDestroy() 的解决方案?

谢谢!

4

4 回答 4

5

当您强制停止应用程序时,就会发生这种情况 - 它是强制停止。没有警告,没有回调,只是停止了。整个进程被杀死,并且没有任何正在运行的组件(活动、服务等)被发出任何警告。

绝对不能保证onDestroy()会被调用。将任何应用程序关键代码移入onPause(),在大多数情况下都会调用它。

于 2012-12-16T18:57:23.683 回答
2

文档中:

一旦活动被创建,onPause()是在进程被杀死之前保证被调用的最后一个方法......onStop()并且onDestroy()可能不会被调用。因此,您应该使用onPause()将关键的持久性数据(例如用户编辑)写入存储。

重申这一点,强制停止并不是为了优雅地退出应用程序。如果您有每次应用程序完成时必须运行的关键代码,您需要在onPause().

于 2012-12-16T18:57:37.590 回答
1

当应用程序强制停止时,会调用 Process.killProcess() 但不会调用 onDestroy() 函数。通过这个链接。你会有一些想法。 Android强制停止回调到应用程序?

于 2013-07-03T06:49:38.950 回答
1

我假设您有要在onDestroy()引用您的行时执行的代码:

“或者可能是在强制停止时触发 onDestroy() 的解决方案?”

Service方法public void onTaskRemoved(Intent rootIntent)是您正在寻找的方法,它将在应用程序被强制停止时调用。

于 2017-02-20T12:35:06.130 回答