【问题标题】:What does this.finish() really do? Does it stop my code running?this.finish() 到底是做什么的?它会阻止我的代码运行吗?
【发布时间】:2013-01-10 19:51:09
【问题描述】:

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

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

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

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

【问题讨论】:

  • 您可以尝试记录调用完成()和调用 Activity 的 onDestroy()之间的时间,以粗略估计需要多长时间。
  • 这里有很好的回复。 stackoverflow.com/a/22526967/2751547

标签: android


【解决方案1】:

任何称为finish() 的方法都会在finish() 方法实际启动之前一直运行。因此,要回答您的问题,在调用方法完成后,您的活动将运行其 finish 方法。 如果你不想让方法继续,那么你可以在finish之后添加一个return语句

【讨论】:

    【解决方案2】:

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

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

    我的 Activity 究竟何时被删除?

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

    【讨论】:

      【解决方案3】:

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

      如果(条件=真){

            this.finish();
            return;
      }
      

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 哎呀,你是对的 - 我没有意识到这个问题是一个骗子(我显然使用了错误的搜索词!)。
        猜你喜欢
        • 2011-08-16
        • 1970-01-01
        • 2014-12-01
        • 2014-04-12
        • 2023-02-01
        • 1970-01-01
        • 1970-01-01
        • 2013-09-01
        • 1970-01-01
        相关资源
        最近更新 更多