我怎么知道OS会杀死一项活动?

时间:2011-03-08 00:08:19

标签: android

我知道我可以在onPause()中使用isFinishing()来了解一个活动是否会被finish()杀死。

然后,我怎么知道由于内存不足而暂时被OS杀死?

感谢。

2 个答案:

答案 0 :(得分:2)

根据docs,{@ 1}}应在活动被销毁之前调用,无论原因如何。如果要求完成,onDestroy将返回true。因此,如果它是错误的,您可以假设系统需要完成。

然而,正如文档也说

  

注意:不要指望这种方法   被称为储蓄的地方   数据!

一般情况下,您无法保证您的活动会被很好地杀死。像任务杀手这样的东西混乱了生命周期。

使用isFinishingonPause正确保存。

答案 1 :(得分:2)

你不能。

如果没有你的应用程序的其余部分继续运行,你的活动可能就会消失,在这种情况下会调用onDestroy。然而,你的整个应用程序也可能会被立即杀死,这就像unix中的kill -9。你的应用程序目前无法运行任何代码,它会在没有任何警告的情况下立即被杀死。

要正确处理此问题,您需要将应用程序设计为在onPause中将所有重要信息保存到磁盘,并准备好稍后在onCreate中检索它。