Activity.finish()如何在Android中运行?

时间:2010-04-07 08:27:51

标签: java android

有人可以提供Activity调用finish()方法时会发生什么的说明吗?

它会立即退出,还是完成调用它的函数?

4 个答案:

答案 0 :(得分:117)

  

是立即退出还是完成   它被调用的函数   ?

调用finish()的方法将运行完成。在您将控制权返回给Android之前,finish()操作甚至都不会开始。

答案 1 :(得分:17)

活动的onCreateonResumeonPause .... onDestroy等每个生命周期事件总是在一个线程上调用 - “主线程”

简而言之,此线程由Queue支持,所有活动事件都将发布到该队列中。 该线程可以按插入顺序执行所有这些事件。

如果您在其中一个生命周期回调中调用finish(),例如onCreate() ...则会在此队列中添加“完成”消息,但该线程无法自由选择&执行“完成”操作 直到当前正在执行的方法返回,即Thread从当前任务中释放。

答案 2 :(得分:13)

ondestroy()是您在销毁活动之前收到的最后一个电话。

这可能是因为活动正在结束(有人在其上调用finish(),或者因为系统暂时销毁此活动实例以节省空间。您可以使用{{区分这两种情况1}}方法。

答案 3 :(得分:1)

如果有两个活动A和B.你的流程来自A> B;和B = A来电finish()

然后,

您调用finish()的方法将像Mark提到的那样执行。回调流程如下 -

  1. onPause() activity A
  2. onRestart()> onStart()>活动B onResume()
  3. 然后,真正的区别来了。如果您未从finish()致电activity A;此处仅调用onStop() Activity A。在这种情况下,我们从finish()调用了Activity A;因此,onStop()onDestroy()都会被activity A
  4. 调用