2011-03-08 105 views

回答

2

根据docs,onDestroy应在活动销毁之前调用,无论原因如何。如果完成请求,isFinishing将返回true。所以如果它是错误的,你可以假定系统需要完成。

然而,随着文档也说

注:保存 数据这种方法 不要指望被称为一个地方!

一般而言,您无法保证您的活动会被很好地杀死。像任务杀手这样的事情会影响生命周期。

使用或onSaveInstanceState正确保存东西。

+0

请参阅此文档http://developer.android.com/reference/android/app/Activity.html#isFinishing%28%29。检查此活动是否处于完成过程中,可能是因为您调用了finish()或其他人已要求完成该活动。 onPause()通常使用这个来确定活动是简单地暂停还是完全结束。 isFinishing()也是如此,如果操作系统正在杀死该活动。我对吗? – Kai 2011-03-08 00:33:57

+1

我读到,这意味着如果操作系统正在杀死它,它不会是真的,但我没有亲自测试过它。为什么你需要知道操作系统是否在杀死它? – 2011-03-08 00:40:59

2

你不能。

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

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

+1

它看起来像Android只杀死进程而不是单个活动。请参阅http://stackoverflow.com/questions/5227071/理解 - 完成 – Kai 2011-03-08 18:30:13

+0

这不是一个“唯一”的事情。如果你的代码依赖于Android的杀死进程(应用程序),那就错了。如果您的代码依赖Android仅查看活动,那就错了。也可以处理。 – 2011-04-04 04:04:42

相关问题