2013-01-10 121 views
2

我對這個.finish()的功能有點朦朧。具體而言,我只是寫了下面的代碼行的活動:this.finish()真的做了什麼?它阻止我的代碼運行?

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

的代碼是爲了關閉當前活動,並且還關閉應用程序的核心活動。它效果很好。但是,我想知道......顯然當前的活動在第一行執行後沒有完全結束。如果我打算調用this.finish()然後開始一些複雜的計算呢?

我的問題是:當我調用this.finish()時,我的Activity究竟是什麼時候被取下來的?

+0

您可以嘗試記錄調用finish()和您的Activity的onDestroy()之間的時間,以便粗略估計它需要多長時間。 –

+1

這裏有一個很好的答覆。 https://stackoverflow.com/a/22526967/2751547 – Zafer

回答

1

克里斯,我不是專家,但在這裏的答案about finish() in android基本上是codeMagic剛纔說的。由於關於onStop()和onDestroy()的討論,鏈接是有價值的

+0

哎呀,你是對的 - 我沒有意識到這個問題是一個騙局(我顯然使用了錯誤的搜索條件!)。 –

5

無論何種方法稱爲finish()都會在finish()方法實際開始之前一直運行。因此,要回答您的問題,在調用方法結束後,您的活動將運行其finish方法。 如果不希望該方法繼續那麼你可以後finish

4

添加return語句我有點朦朧關於究竟this.finish()不

呼叫基本上只是通知Android操作系統,你的活動已經準備好銷燬了。然後,Android將(在其準備好的時候)調用onPause()關於該活動並繼續銷燬它(通過活動生命週期,不會保證onDestroy()將被調用)。一般來說,在撥打finish()之後,您可能不應該再執行任何操作。根據Android docs,當您準備關閉該活動時,應該致電finish()

什麼時候我的活動正好被取下?

我猜你的活動只會被添加到一些銷燬隊列。在此期間,您可能會繼續執行,直到操作系統破壞它爲止。我相信你肯定可以完成執行調用方法finish()

相關問題