如果按照以下步骤强制停止应用设置 - >应用程序 - >管理应用程序 - > - >强制停止,android是否调用了Activity或应用程序的onDestroy? (如果没有,有没有办法知道应用程序是否因用户触发的强制停止而死亡)。
答案 0 :(得分:8)
强制停止应用会终止整个过程(即使用Process.killProcess(int pid)
)。与应用程序关联的所有资源都将被内核删除并释放。所以不,你无法拦截这一行动。
当您在市场上发布应用程序时,开发者控制台将为您提供有关强制关闭,崩溃等的统计信息(如果这就是您要求的原因)。
答案 1 :(得分:3)
简而言之,不,onDestroy()
没有被调用,你不能这样做。 Android不支持它。
更广泛的答案......
在这种情况下似乎没有调用 onDestroy()
。我在调用super.onDestroy之前尝试让它Toast
来测试这个,但Toast
消息从未出现过。 (并且根据this post,onDestroy()
实际上是不可靠的,并且不会经常被调用,如果有的话,在电话上,而它可能在模拟器上调用 - 所以要注意这一点)。而是调用killProcess()
,我们无法拦截。
此外,根据this post中接受的答案,看来我们甚至无法在用户控制的力量停止后捕捉并执行任务。
答案 2 :(得分:0)
没有。这实际上是不可能的。我没有看过有问题的Android代码,但我认为“强制停止”只是在你的应用的进程ID上调用kill
。因此,你可以拦截的唯一方法是,如果你能捕获信号,我认为Android不允许这样做。
如果你扎根了,你可能会这样做,但不能以任何标准的方式。