【发布时间】:2011-03-08 00:08:19
【问题描述】:
我知道我可以在 onPause() 中使用 isFinishing() 来了解活动是否会被 finish() 杀死。
那么,我怎么知道某个活动会因为内存不足而被操作系统暂时终止呢?
谢谢。
【问题讨论】:
标签: android
我知道我可以在 onPause() 中使用 isFinishing() 来了解活动是否会被 finish() 杀死。
那么,我怎么知道某个活动会因为内存不足而被操作系统暂时终止呢?
谢谢。
【问题讨论】:
标签: android
根据docs,onDestroy 应该在 Activity 被销毁之前调用,无论原因如何。如果请求完成,isFinishing 将返回 true。所以如果它是假的,你可以假设系统需要完成。
但是,正如文档中所说的那样
注意:不要指望这种方法 被称为储蓄的地方 数据!
一般来说,你不能保证你的 Activity 会被很好地杀死。诸如任务杀手之类的东西会扰乱生命周期。
使用onPause 或onSaveInstanceState 正确保存内容。
【讨论】:
你不能。
您的活动可能会在您的应用程序的其余部分不正常运行的情况下消失,在这种情况下会调用 onDestroy。但是,您的整个应用程序也可能会立即被杀死,这就像 unix 中的 kill -9 一样。您的应用此时无法运行任何代码,它会立即被终止且没有警告。
为了正确处理此问题,您希望将应用设计为在 onPause 中将所有重要信息保存到磁盘,并准备好稍后在 onCreate 中检索它(如果需要)。
【讨论】: