簡體   English   中英

Android上的活動娛樂

[英]Activity Recreation on Android

我正在閱讀有關管理活動生命周期的官方Android教程。 請引用以下幾點。

(正常的應用程序行為)“當由於用戶按下Back或活動完成而破壞了活動時,該活動實例的系統概念將永遠消失,因為該行為表明不再需要該活動。”

(系統誘發的破壞)“如果系統由於系統約束(而不是正常的應用行為)破壞了活動,則盡管實際的Activity實例已消失,但系統會記住它的存在,以便用戶導航回該實例時,系統使用一組保存的數據創建活動的新實例,這些數據描述了活動被銷毀時的狀態。”

“系統用來恢復先前狀態的已保存數據是存儲在Bundle對象中的一組鍵值對。默認情況下,已保存的信息與活動的視圖層次結構有關,例如在小部件中輸入的文本,滾動位置等等。要保存活動的其他狀態信息(例如成員變量),必須實現onSaveInstanceState()並將鍵值對添加到Bundle對象。”

請查看我是否可以從以上內容正確總結:

該系統具有資源意識,並且可以破壞活動以恢復內存。 如果系統執行了該操作,則可以保留將被銷毀的活動恢復到先前狀態的選項,如果以后需要的話。

狀態=視圖狀態(默認,自動完成)+成員變量狀態(手動,由程序員決定)。

我的問題是,如果系統為了釋放一些內存而破壞了一個活動,那么,如果它允許我們保留該活動的“副本”,以便該活動可以准確地還原到一點,它是否會破壞目的?就像在銷毀之前一樣?

不,它不會破壞目的:

  • Bundle針對可序列化進行了優化,因此Android框架可以將其寫入磁盤。
  • 表示狀態所需的數據比運行應用程序副本所需的RAM量小得多。 例如,如果向用戶顯示圖像,則可能只需要保存圖像的位置,而不是保存所有數據。 另外,每個Android應用程序都是一個全新的Dalvik VM,因此,如果所有活動都來自不同的應用程序,則殺死一個活動意味着要少一個Dalvik VM –每個Dalvik VM可能都需要相對大量的RAM。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM