关于android:了解isFinishing()

Understanding of isFinishing()

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

如果我在onPause()中调用isFinishing(),那么isFinishing()调用的返回值在以下3个场景中会是什么?

  • 由于调用了finish(),活动被终止。
  • 活动不在前台,并且由于内存不足,操作系统正在杀死活动(而不是应用程序)。
  • 活动即将落户。
  • 我确信isFinishing()的结果在方案1中将为真,在方案3中将为false。

    情景2怎么样? 在场景2中isFinishing()会返回true还是false?


    当操作系统位于前台时,您的活动不会被操作系统杀死。这没有意义。

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

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

    (如果Dianne介入并在此纠正我,我不会感到惊讶,顺便说一下。)


    如何调用onPause? 2种方式:活动转到后台或我们在某处调用finish()。如果活动转到后台,则isFinishing()为false。如果我们调用finish(),则isFinishing()为true。现在看情况2:由于内存不足,活动不在前台,活动(不是应用程序)被操作系统杀死。一个活动将被杀死,所以它冥想在后台,它被暂停,所以onPause不会被调用。
    顺便说一句,活动不能被杀死,只有进程才能被杀死