this.finish()真的有什么作用?它会阻止我的代码运行吗?

时间:2013-01-10 19:51:09

标签: android

我有点朦胧,看看究竟是什么。具体来说,我只是在一个活动中编写了以下代码行:

this.finish();
Globals gs = (Globals) getApplication();
gs.MainActivity.finish();

该代码旨在关闭当前活动并关闭应用程序的核心活动。而且效果很好。但是,我想知道......显然当前活动在第一行执行后并没有完全结束。如果我要调用this.finish()然后开始一些复杂的计算呢?

我的问题是:当我调用this.finish()时,我的活动究竟何时被删除?

4 个答案:

答案 0 :(得分:6)

finish()方法实际启动之前,任何名为finish()的方法都会一直运行。因此,为了回答您的问题,在调用方法完成后,您的活动将运行其finish方法。 如果您不希望该方法继续,那么您可以在finish

之后添加一个return语句

答案 1 :(得分:4)

  

我对这究竟是什么有点朦胧。完成()

调用finish()基本上只是通知Android操作系统您的活动已准备好被销毁。然后,Android将(在准备就绪时)在活动上调用onPause()并继续销毁它(不会通过活动生命周期调用onDestroy())。通常,在致电finish()后,您可能不应再执行任何操作。根据{{​​3}},您应该在准备好关闭活动时致电finish()

  

什么时候我的活动确实被取消了?

我猜你的活动只会被添加到一些破坏队列中。在此期间,您可能能够继续执行,直到操作系统销毁它。我相信你肯定可以完成执行调用finish()的方法。

答案 2 :(得分:1)

克里斯,我不是专家,但在这里答案about finish() in android基本上就是codeMagic所说的。由于有关onStop()和onDestroy()

的讨论,该链接很有价值

答案 3 :(得分:0)

Activity.finish()直到方法完全执行后才会停止当前活动,因此跳过代码的其余部分,可以使用return;在某些情况下使用它来验证您的跳过。

if(condition = true){

      this.finish();
      return;
}