在http://developer.android.com/reference/android/app/Activity.html阅读有关isFinishing()
的Android文档后,我感到困惑。
如果我在isFinishing()
中致电onPause()
,那么isFinishing()
来电的返回值将在以下3个情景中得到什么?
finish()
被调用,活动被终止。我确信在方案1中isFinishing()
的结果将为真,在方案3中将为 false 。
情景2怎么样?情景2中isFinishing()
会返回 true 或 false 吗?
答案 0 :(得分:26)
当操作系统位于前台时,您的活动不会被操作系统杀死。这没有意义。
但是,如果活动因为用户切换到其他应用而进入后台,则可能会在onPause()
处理后被杀死。因此,当用户切换到新应用时,您可以获得isFinishing() == false
,但随后应用程序将被终止。
正如文档所述,保存onPause()
中的所有持久数据。 onDestroy()
无法保证被调用。
(如果Dianne介入并在此纠正我,我不会感到惊讶,顺便说一句。)
答案 1 :(得分:1)
如何调用onPause? 2种方式:活动转到后台或我们在某处调用finish()。如果活动转到后台,则isFinishing()为false。如果我们调用finish(),则isFinishing()为true。现在看情况2:由于内存不足,活动不在前台,活动(不是应用程序)被操作系统杀死。一个活动将被杀死,所以它冥想在后台,它被暂停,所以onPause不会被调用。 顺便说一句,一个活动不能被杀死,只有进程才能被杀死
答案 2 :(得分:-1)
isFinishing()
在除onDestroy()
以外的活动的所有方法中都返回false。
有关更多信息,请在以下所有活动方法中添加日志
Log.i("onCreate",""+isFinishing);