我在http://developer.android.com/reference/android/app/Activity.html上读了一篇关于http://developer.android.com/reference/android/app/Activity.html的安卓文档后,感到很困惑。
如果我在isFinishing()中调用onPause(),那么在以下3种情况下,isFinishing()调用的返回值是多少?
memory.
finish()被调用。finish()正在进入后台。我确信,isFinishing()的结果在场景1中为真,在场景3中为false。
场景2怎么样?在场景2中,isFinishing()将返回true还是false?
发布于 2011-03-08 00:56:48
当操作系统处于前台时,您的活动不会被操作系统杀死。那就没道理了。
但是,如果由于用户切换到不同的应用程序而导致活动转到后台,那么在onPause()被处理之后,它可能会被杀死。因此,您可以在用户切换到新应用程序时获得isFinishing() == false,但随后应用程序就会被杀死。
如文档所述,将所有持久数据保存在onPause()中。不能保证调用onDestroy()。
(顺便说一句,如果黛安介入并纠正我,我也不会感到惊讶。)
发布于 2016-06-15 11:07:16
如何调用onPause? 2种方式:活动转到后台,或者我们在某个地方调用finish()。如果活动转到后台,则isFinishing()为false。如果我们调用finish(),则isFinishing()为true。现在请看场景2:活动不在前台,由于内存不足,操作系统正在杀死活动(而不是应用程序)。一个活动会被杀死,所以它会在后台沉思,它会被暂停,所以onPause不会被调用。顺便说一句,一个活动是不能被杀死的,只有进程才能被杀死。
发布于 2020-02-07 18:30:44
isFinishing()在活动的所有方法中返回false,但onDestroy()除外。
有关更多信息,请将日志放入所有活动方法,如下所示
Log.i("onCreate",""+isFinishing);https://stackoverflow.com/questions/5227071
复制相似问题