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