我知道我可以在onPause()中使用isFinishing()来了解一个活动是否会被finish()杀死。
然后,我怎么知道由于内存不足而暂时被OS杀死?
感谢。
答案 0 :(得分:2)
根据docs,{@ 1}}应在活动被销毁之前调用,无论原因如何。如果要求完成,onDestroy
将返回true。因此,如果它是错误的,您可以假设系统需要完成。
然而,正如文档也说
注意:不要指望这种方法 被称为储蓄的地方 数据!
一般情况下,您无法保证您的活动会被很好地杀死。像任务杀手这样的东西混乱了生命周期。
使用isFinishing
或onPause
正确保存。
答案 1 :(得分:2)
你不能。
如果没有你的应用程序的其余部分继续运行,你的活动可能就会消失,在这种情况下会调用onDestroy。然而,你的整个应用程序也可能会被立即杀死,这就像unix中的kill -9。你的应用程序目前无法运行任何代码,它会在没有任何警告的情况下立即被杀死。
要正确处理此问题,您需要将应用程序设计为在onPause中将所有重要信息保存到磁盘,并准备好稍后在onCreate中检索它。