我有点朦胧,看看究竟是什么。具体来说,我只是在一个活动中编写了以下代码行:
this.finish();
Globals gs = (Globals) getApplication();
gs.MainActivity.finish();
该代码旨在关闭当前活动并关闭应用程序的核心活动。而且效果很好。但是,我想知道......显然当前活动在第一行执行后并没有完全结束。如果我要调用this.finish()然后开始一些复杂的计算呢?
我的问题是:当我调用this.finish()时,我的活动究竟何时被删除?
答案 0 :(得分:6)
在finish()
方法实际启动之前,任何名为finish()
的方法都会一直运行。因此,为了回答您的问题,在调用方法完成后,您的活动将运行其finish
方法。
如果您不希望该方法继续,那么您可以在finish
答案 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;
}