2012-07-23 86 views
11

比方說,我們有一個默認情況下,默認行爲空活動,使用默認意圖標誌啓動。用戶按下設備上的後退按鈕。活動消失......但實際上呢?Android的後退按鈕行爲

  • 按下後退按鈕的行爲方式與finish()相同嗎?
  • 是活動immedietely破壞(onDestroy叫)?
  • 活動是否被保證被破壞,但不是一蹴而就的?
  • 是否有任何機會的活動將不會被破壞,當該活動在未來推出這種情況下會被重用? (所以只有和onStop - >onStartonResume被稱爲?)

我正在尋找一個可靠的答案,所以請,如果你不十分確定,這裏發生了什麼不回答。

+4

這可能是你的興趣:http://developer.android.com/training/basics/activity-lifecycle/index.html – 2012-07-23 10:59:34

+0

你可以發佈你的代碼,所以我們可以更好地判斷 – 2012-07-23 11:05:16

+1

是否有'default ,具有默認行爲的空活動,使用默認意圖標誌啓動,您無法複製?只需在IDE中創建一個默認項目。 – 2012-07-23 11:05:57

回答

6

http://developer.android.com/training/basics/activity-lifecycle/recreating.html

這是子章節來自解決您問題的官方Android文檔。它是Managing the Activity Lifecycle這個主題的子章節,可以在這裏閱讀: http://developer.android.com/training/basics/activity-lifecycle/index.html

絕對值得閱讀整章來了解Androids活動行爲的細節。但是這個子章節(第一個鏈接)是這個問題的相關部分。

+0

這是一個[僅限鏈接的答案](http://meta.stackexchange.com/q/8231/247470),你能引用文檔的相關部分嗎?感覺就像你想通過強迫人們閱讀這些文章,嘗試蘇格拉底方法並使用[破壞者降價](http://meta.stackexchange.com/q/1191/247470)來做好事。 – TWiStErRob 2016-03-02 11:04:04

1

當用戶按下BACK鍵時,當前活動從堆棧頂部彈出(活動保證會被銷燬,但不會立即,可能是系統資源較少時),並且以前的活動恢復(其UI的以前狀態被恢復)。

Which actions does the back button/back key on Android trigger?

+0

請參考這個問題:http://stackoverflow.com/questions/4778754/kill-activity-on-back-button如果它總是被破壞,那麼爲什麼他們迫使背部面漆()按鈕? – 2012-07-23 11:16:45

+0

也檢查出接受的答案在這裏:http://stackoverflow.com/questions/3249332/did-back-key-destroy-an-activity – 2012-07-23 11:17:14

2

當您按下回來,OS(通過ActivityManager可能)(如果沒有被像鍵盤,片段,活動等任何攔截)將嘗試向用戶顯示以前的活動您當前的任務(同樣,忽略碎片的背堆棧)。

如果沒有這樣的活動,任務將被終止,你會去上一個任務 - 在主屏幕上大部分的時間或可能已經推出您的應用程序的一些其他的應用。

你會得到onDestroy叫一聲(這取決於它需要多長時間來啓動下一個活動,而是一個很好的手機上應該是100-200ms下)。

您的活動實例不會onFinish後可重複使用。這發生在活動被破壞之前,所以如果你需要另一個相同類型的活動,操作系統將創建另一個實例。

+0

這不是我問過的。這個問題很精確。 – 2012-07-23 11:14:54

+0

「活動消失......但是,實際上呢?」 - 我想我解決了你的問題 – 2012-07-23 12:25:35

+0

這就是你的問題。你只是讀了第一句話,沒有想到就回答。如果你會閱讀其餘的內容,你會注意到我已經解釋了我究竟在問什麼。 – 2012-07-23 13:05:55

2

使用應該看看這個try this

,並請告知具體你想與您的默認活動後退按鈕做什麼......

0

Definitly onDestroy()被稱爲.....有幾種情況下,您的活動由於正常的應用程序行爲而遭到破壞,例如用戶按下「後退」按鈕或您的活動通過調用finish()表示其自身銷燬。