我是從大書呆子牧場的「Android編程」看這個頁面的,我被下面的句子搞糊塗了。它規定「當活動被隱藏時,一個活動對象不存在。」這讓我感到困惑,因爲當我打開一個應用程序並按下home按鈕時,會調用onPause(),並且活動達到「暫停」狀態,其活動存儲在操作系統中,如圖所示。它必須仍在後臺運行,因爲按下home按鈕時不會調用onDestroy()。事實上,當我打開我的任務管理器時,我可以看到按下主頁按鈕時活動的樣子。 「活動對象不存在」究竟是什麼意思?當它在背景中明顯處於暫停狀態時?
回答
這篇文檔看起來有點錯誤和困惑。 Android官方文檔沒有提到「隱藏」狀態,而是文檔中的「應用進程終止」塊。here
基本上,只從STOPPED狀態,OS可能隨時破壞您的活動。如果它這樣做,會調用onSaveInstanceState。這個Activity變量將是無效的。在任何時候,它都可以重新創建一個新的Activity,然後調用onCreate然後onRestoreInstanceState,傳入你之前保存的Bundle,重新創建活動。
這是令人困惑的我,因爲當我打開一個應用程序,並按下家 按鈕,在onPause()被調用,活動達到了「暫停」狀態 其活性在OS藏匿,如圖這個數字。
我不會說這是「隱藏」。你的活動活得很好,剛剛暫停。
它必須仍在後臺運行,因爲onDestroy()不是 當我按下home按鈕時調用。
沒錯。當你點擊主頁按鈕時,你對操作系統說:「嘿,我要去別的地方,但我不一定完成這個活動。」
如果您改爲點擊後退按鈕,則會看到onDestroy
調用。在這裏你正在對操作系統說:「好的,我已經完成了這個活動,你想做什麼。」
它們究竟是什麼意思「活動對象不存在?」當它 顯然在後臺暫停狀態?
當操作系統需要摧毀你的活動而沒有「告訴」它這樣做(即點擊返回按鈕)時,進入隱藏狀態。當您的設備經歷設備配置更改時會發生這種情況。一個典型的例子是旋轉。如果操作系統需要釋放內存,也會發生這種情況。在這種情況下,onSaveInstanceState
將被調用以在Bundle
中捕獲您的活動狀態。隱藏狀態就是這個Bundle
的保存和你的活動的類名。實際的Activity對象被標記爲垃圾收集。然後只給出Bundle
對象和活動的類名稱,如果用戶返回該活動,則操作系統可以創建活動的新實例。
一拿就是你不要必須自己執行onSaveInstanceState
除非你有特定的信息要保存。視圖層次結構的某些組件會自動將有關自己的信息添加到Bundle,因爲超級Activity.onSaveInstanceState
仍將被調用。從文檔:
默認實現通過在 層次結構中有一個ID,每個視圖調用的onSaveInstanceState(),並通過保存的ID需要照顧的大多數UI每個實例 狀態你的當前爲 的聚焦視圖(所有視圖均由onRestoreInstanceState(Bundle)的默認實現 恢復)。如果您將此方法覆蓋爲 保存未被每個單獨視圖捕獲的附加信息,那麼您將可能想要調用默認實現 ,否則應準備好保存每個視圖的所有狀態。
- 1. Android風味意圖活動
- 2. 對象在Android中與「活動/上下文」「綁定」意味着什麼?
- 3. 作爲對話框的活動隱藏第一個活動
- 4. 在活動中獲取意圖對象
- 5. Facebook活動是「私人」意味着什麼?
- 6. 做的「隱藏」活動
- 7. 隱藏安卓活動
- 8. 如何隱藏活動
- 9. AlertDialog被活動隱藏
- 10. 隱藏一個活動
- 11. 僅在創建時隱藏活動欄中的活動名稱
- 12. onBackPressed隱藏不破壞活動
- 13. jQuery .blur() - 不要隱藏活動div
- 14. Bootstrap Tabs不隱藏非活動div
- 15. jQuery摺疊隱藏不活動滑塊
- 16. 安卓4.2:主要活動actionbar隱藏啓動新的活動
- 17. 意圖轉到不存在的活動
- 18. Android:2種不同的視圖意味着2種不同的活動?
- 19. 活動啓動時隱藏鍵盤
- 20. 隱藏滾動條開始活動
- 21. 使用隱式意圖啓動活動?
- 22. 子活動返回NULL意圖對象
- 23. 在android中的隱藏活動
- 24. 在菜單中隱藏活動語言
- 25. 在活動中顯示和隱藏SettingsFragment
- 26. Android:活動在startActivity()後立即隱藏()
- 27. 對象不源自動化活動
- 28. 無法啓動活動找不到活動來啓動意圖
- 29. 動畫在scrollViewDidScroll中意味着什麼?
- 30. [Bindable]在動作中意味着什麼?
我覺得這裏最關鍵的一點是最後一句,「操作系統可以使用活動記錄時,它需要重新加進活動「。 Activity'對象可能不再有效,但活動內的組件,特別是Parcelable位存儲在OS中。當應用程序恢復時,操作系統可以從可調節數據構建備份活動。當你的應用程序處於後臺時,Android可能也會釋放資源,因爲它最終會調用'onDestroy'。 – CzarMatt