4

我对 this.finish() 到底做了什么有点模糊。具体来说,我只是在一个活动中编写了以下代码行:

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

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

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

4

4 回答 4

7

无论调用什么方法,finish()都会在finish()方法实际开始之前一直运行。因此,要回答您的问题,在调用方法完成后,您的活动将运行其finish方法。如果您不希望该方法继续,那么您可以在之后添加一个 return 语句finish

于 2013-01-10T19:56:45.960 回答
5

我对 this.finish() 到底做了什么有点模糊

调用finish()基本上只是通知 Android 操作系统您的活动已准备好被销毁。然后,Android 将(只要它准备好)调用onPause()Activity 并继续销毁它(不会调用保证 onDestroy()),通过 Activity 生命周期。一般来说,您可能不应该在调用finish(). 根据Android 文档,您应该finish()在准备好关闭活动时调用。

我的活动到底什么时候被删除?

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

于 2013-01-10T19:56:48.257 回答
2

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

如果(条件=真){

      this.finish();
      return;
}
于 2018-08-08T05:37:24.183 回答
1

克里斯,我不是专家,但这里关于 android中的 finish() 的答案基本上就是 codeMagic 刚刚所说的。该链接很有价值,因为关于 onStop() 和 onDestroy() 的讨论

于 2013-01-10T19:58:19.707 回答