了解isFinishing()
在阅读有关isFinishing()
Android文档后,我感到困惑: http://developer.android.com/reference/android/app/Activity.html
如果我在onPause()
调用isFinishing()
,那么在以下3种情况下, isFinishing()
调用的返回值应该是什么?
- 由于finish()被调用,活动正在被杀死。
- 由于内存不足,活动不在前台,活动(不是应用程序)被操作系统杀死。
- 活动将会背景。
我相信, isFinishing()
的结果在场景1中是正确的 ,在场景3中是错误的 。
情况2呢? 在场景2中, isFinishing()
返回true或false ?
您的活动在前台不会被操作系统杀死。 这没有意义。
但是,如果由于用户切换到其他应用程序而导致活动进入后台,则可能会在处理onPause()
后将其杀死。 因此,当用户切换到新的应用程序时,您可能会得到isFinishing() == false
,但是应用程序被终止。
正如文档所述,将所有持久数据保存在onPause()
。 onDestroy()
不保证被调用。
(如果Dianne在这里进行纠正,我不会感到惊讶)
如何调用onPause? 2种方式:活动进行到后台,或者我们称之为finish()。 如果活动进入后台,isFinishing()为false。 如果我们调用finish(),isFinishing()是真的。 现在看情况2:一个活动不在前台,活动(不是应用程序)由于内存不足而被操作系统杀死。 一个活动将被杀死,所以它沉迷于后台,被暂停,所以onPause不会被调用。 顺便说一句,一个活动不能被杀死,只有进程可以被杀死