当我使用“正在运行的服务”选项卡下的停止按钮停止服务时,将调用onDestroy()方法。
但是当我强制停止应用程序时,永远不会调用onDestroy()。
对此有何解释?
或强制停止时触发onDestroy()的解决方案?
谢谢!
答案 0 :(得分:3)
当你的力量停止一个应用程序时,恰好发生这种情况 - 它是强制停止的。没有警告,没有回调,只是停止了。整个过程被终止,并且没有任何正在运行的组件(活动,服务等)被给予任何警告。
绝对没有保证会调用onDestroy()
。将任何应用程序关键代码移动到onPause()
,这在大多数情况下都会被调用。
答案 1 :(得分:2)
创建活动后,
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)正是您要找的,当应用程序强制停止时会调用它。