6

如果按照 Settings->Application->ManageApplications -> --> Force Stop 的步骤强制停止应用程序,android 会调用 Activity 或 Application 的 onDestroy 吗?(如果没有,有什么方法可以知道应用程序是否由于用户触发的强制停止而死亡)。

4

3 回答 3

10

强制停止应用程序将终止整个进程(即使用Process.killProcess(int pid))。与应用程序关联的所有资源都将被内核删除和释放。所以不,您无法拦截此操作。

当您在市场上发布您的应用程序时,开发人员控制台将为您提供有关强制关闭、崩溃等的统计信息(如果这就是您询问的原因)。

于 2012-06-22T17:39:46.667 回答
3

简而言之,不,onDestroy()不叫,你不能这样做。安卓不支持。

一个更广泛的答案......

onDestroy()在这种情况下似乎没有被调用。Toast我通过在调用 super.onDestroy 之前尝试拥有它来测试这一点,但该Toast消息从未出现过。(根据这篇文章onDestroy()它真的不可靠,不会经常在手机上调用,如果有的话,它可能会在模拟器上调用——所以要注意这一点)。相反killProcess()被调用,我们不能拦截它。

此外,根据这篇文章中接受的答案,在用户控制的强制停止后,我们似乎甚至无法捕获和执行任务。

于 2012-06-22T17:30:05.393 回答
0

不,这真的不可能。我没有查看有问题的 Android 代码,但我想“强制停止”只是调用kill您的应用程序的进程 ID。因此,您可以拦截的唯一方法是捕获信号,我认为 Android 不允许这样做。

如果您已扎根,则可以这样做,但不是以任何标准方式。

于 2012-06-22T17:39:16.053 回答