了解isFinishing()

在阅读有关isFinishing() Android文档后,我感到困惑: http://developer.android.com/reference/android/app/Activity.html

如果我在onPause()调用isFinishing() ,那么在以下3种情况下, isFinishing()调用的返回值应该是什么?

  1. 由于finish()被调用,活动正在被杀死。
  2. 由于内存不足,活动不在前台,活动(不是应用程序)被操作系统杀死。
  3. 活动将会背景。

我相信, isFinishing()的结果在场景1中是正确的 ,在场景3中是错误的

情况2呢? 在场景2中, isFinishing()返回truefalse

您的活动在前台不会被操作系统杀死。 这没有意义。

但是,如果由于用户切换到其他应用程序而导致活动进入后台,则可能会在处理onPause()后将其杀死。 因此,当用户切换到新的应用程序时,您可能会得到isFinishing() == false ,但是应用程序被终止。

正如文档所述,将所有持久数据保存在onPause()onDestroy()不保证被调用。

(如果Dianne在这里进行纠正,我不会感到惊讶)

如何调用onPause? 2种方式:活动进行到后台,或者我们称之为finish()。 如果活动进入后台,isFinishing()为false。 如果我们调用finish(),isFinishing()是真的。 现在看情况2:一个活动不在前台,活动(不是应用程序)由于内存不足而被操作系统杀死。 一个活动将被杀死,所以它沉迷于后台,被暂停,所以onPause不会被调用。 顺便说一句,一个活动不能被杀死,只有进程可以被杀死