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

本系列文章:前端

爲了更方便地查詢,你能夠去查閱 PDF 版本的圖表備忘錄android

ViewModel

ViewModel 的生命週期很是簡單:它只有 onCleared 這一個回調。可是,這個函數的做用域在 activity 和 fragment 中是有區別的:ios

ViewModel 做用域git

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

下載 ViewModel 圖表後端

半透明 Activity

半透明的 activity 有半透明(一般是透明的)的背景,因此用戶仍然能夠看到該 activity 下面是什麼。架構

當一個 activity 的主題設置了 android:windowIsTranslucent 屬性時,生命週期稍有變化:背景後面的 activity 不會被中止,只會被暫停,因此能夠繼續接收 UI 的更新:ide

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

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

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

下載半透明 activity 圖表

啓動模式

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

若是你真的須要使用 SINGLE_TOP,下圖展示了它的行爲模式:

Single Top 行爲模式

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

Single Task

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

下載啓動模式圖表

若是發現譯文存在錯誤或其餘須要改進的地方,歡迎到 掘金翻譯計劃 對譯文進行修改並 PR,也可得到相應獎勵積分。文章開頭的 本文永久連接 即爲本文在 GitHub 上的 MarkDown 連接。


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

相關文章
相關標籤/搜索