当一个Activity调用其finish()方法时,会发生什么?它会立即退出,还是会完成从中调用它的函数?
它是立即退出还是完成调用它的函数?
调用了finish()
方法的函数将一直运行直至完成。在Android将控制权返回之前,finish()
操作甚至不会开始。
每个生命周期事件,如onCreate
、onResume
、onPause
......onDestroy
都会在一个线程上调用 - 主线程。
简而言之,这个线程由队列支持,所有活动事件都会被投递到其中。此线程可以按插入顺序执行所有这些事件。
如果您在生命周期回调中之一(如onCreate()
)调用了finish()
,则“finish”消息将添加到此队列中,但是线程不能自由地选择并执行“finish”操作,直到当前正在执行的方法返回即该线程被从当前任务中释放。
ondestroy()
是在你的活动被销毁之前收到的最后一个调用。
这可能是因为活动正在完成(有人调用了finish()
),或者因为系统正暂时销毁此活动实例以节省空间。您可以使用isFinishing()
方法区分这两种情况。
finish()
。finish()
的方法将像Mark提到的那样执行。回调流程如下所示 -
activity A
的onPause()
Activity B
的onRestart()
>onStart()
>onResume()
activity A
调用finish()
;则此处仅会调用Activity A
的onStop()
。而在这种情况下,我们从Activity A
调用了finish()
;因此,activity A
的onStop()
和onDestroy()
都将被调用。