[譯] Android 生命週期備忘錄 —— 第四部分:ViewModel、半透明 Activity 及啟動模式

_夏霂熠雨發表於2019-04-11

本系列文章:

為了更方便地查詢,你可以去查閱 PDF 版本的圖表備忘錄

ViewModel

ViewModel 的生命週期非常簡單:它只有 onCleared 這一個回撥。但是,這個函式的作用域在 activity 和 fragment 中是有區別的:

[譯] Android 生命週期備忘錄 —— 第四部分:ViewModel、半透明 Activity 及啟動模式

ViewModel 作用域

注意,初始化是在獲取 ViewModel 時進行的,通常在 onCreate 方法中完成。

下載 ViewModel 圖表

半透明 Activity

半透明的 activity 有半透明(通常是透明的)的背景,所以使用者仍然可以看到該 activity 下面是什麼。

當一個 activity 的主題設定了 android:windowIsTranslucent 屬性時,生命週期稍有變化:背景後面的 activity 不會被停止,只會被暫停,所以可以繼續接收 UI 的更新:

[譯] Android 生命週期備忘錄 —— 第四部分:ViewModel、半透明 Activity 及啟動模式

常規 activity 和半透明 activity 之間的比較

此外,當返回到一個任務時,這兩個 activity 都會被恢復,重走 onRestartonStart 方法,但只有半透明的 activity 重走 onResume 方法:

[譯] Android 生命週期備忘錄 —— 第四部分:ViewModel、半透明 Activity 及啟動模式

按下 home 鍵,回到帶有半透明 activity 的應用程式

下載半透明 activity 圖表

啟動模式

處理任務和回退棧的推薦方法主要是:別處理 — 你應該採用預設行為。要了解更多細節,請閱讀 Ian Lake 的關於這個主題的文章:任務和回退棧

如果你真的需要使用 SINGLE_TOP,下圖展現了它的行為模式:

[譯] Android 生命週期備忘錄 —— 第四部分:ViewModel、半透明 Activity 及啟動模式

Single Top 行為模式

方便比較,下面是 singleTask 模式看起來的樣子(但是你可能不應該用到它):

[譯] Android 生命週期備忘錄 —— 第四部分:ViewModel、半透明 Activity 及啟動模式

Single Task

注意:如果你用了 Jetpack 中 導航架構元件(Navigation Architecture Component),你會從它支援 Single Top 和自動合成回退棧中受益。

下載啟動模式圖表

如果發現譯文存在錯誤或其他需要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可獲得相應獎勵積分。文章開頭的 本文永久連結 即為本文在 GitHub 上的 MarkDown 連結。


掘金翻譯計劃 是一個翻譯優質網際網路技術文章的社群,文章來源為 掘金 上的英文分享文章。內容覆蓋 AndroidiOS前端後端區塊鏈產品設計人工智慧等領域,想要檢視更多優質譯文請持續關注 掘金翻譯計劃官方微博知乎專欄

相關文章