使用强制停止时未调用Android - Service - onDestroy()方法

时间:2012-12-16 18:51:01

标签: android

当我使用“正在运行的服务”选项卡下的停止按钮停止服务时,将调用onDestroy()方法。

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

对此有何解释?

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

谢谢!

4 个答案:

答案 0 :(得分:3)

当你的力量停止一个应用程序时,恰好发生这种情况 - 它是强制停止的。没有警告,没有回调,只是停止了。整个过程被终止,并且没有任何正在运行的组件(活动,服务等)被给予任何警告。

绝对没有保证会调用onDestroy()。将任何应用程序关键代码移动到onPause(),这在大多数情况下都会被调用。

答案 1 :(得分:2)

来自documentation

  

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

重申这一点,强制停止不是优雅的,并以关怀的方式退出应用程序。如果您有应用程序完成后必须运行的关键代码,则需要在onPause()中运行它。

答案 2 :(得分:1)

当应用程序强制停止时,调用Process.killProcess()但不调用onDestroy()函数。浏览此链接。你会得到一些想法。 Android force Stop callback to application?

答案 3 :(得分:1)

我假设您要在unsigned int count = 0, sum = 0; printf("How many numbers do you want to sum: "); scanf("%u", &count); for (int i = 1; i <= count; ++i) { printf("enter the integer: "); unsigned int value; scanf("%u", &value); sum += value; // or sum = sum + value; } printf("the sum of all the %u numbers is: %u\n", count, sum); 中执行您想要在您的行中执行的代码:

  

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

onDestroy()方法public void onTaskRemoved(Intent rootIntent)正是您要找的,当应用程序强制停止时会调用它。