- 原文地址:The Android Lifecycle cheat sheet — part I: Single Activities
- 原文做者:Jose Alcérreca
- 譯文出自:掘金翻譯計劃
- 本文永久連接:github.com/xitu/gold-m…
- 譯者:IllllllIIl
- 校對者:tanglie1993,atuooo
Android 系統的目的是讓用戶加強控制權而且讓他們簡便地使用應用程序。例如,一個 app 的用戶可能會旋轉屏幕,回覆一條通知信息,或者切換到另外一個任務,而用戶應該可以在這類操做後繼續流暢地使用這個 app。html
爲了提供這種用戶體驗,你應該知道怎麼管理組件的生命週期。組件能夠是一個 Activity,一個 Fragment,一個 Service,或者 Application 自己,甚至是在默默運行的進程。組件有生命週期,生命週期會在多種狀態中變換。當狀態發生變化時,系統會經過一個生命週期回調方法通知你。前端
爲了更好解釋生命週期是怎麼運做的,咱們定義了根據現有組件進行分類的一系列用戶場景。android
第一部分: Activities — 單一 activity 的生命週期 (就是本文)ios
第二部分: 多個 activities — 跳轉和返回棧(back stack)git
第三部分: Fragments — activity 和 fragment 的生命週期github
它們的圖表也提供了 PDF格式備忘錄,以方便查閱。後端
除非特別說明,接下來的這些場景展現了這些組件的默認行爲。app
若是你發現有錯誤或者遺漏了什麼重要的東西,請在下方評論。ide
觸發緣由:post
Activity.finish()
方法被調用這個最簡單的場景說明了一個單一 activity 的應用被用戶開啓,結束,和重啓時發生了什麼:
場景 1:應用被終止而且重啓
狀態處理
觸發緣由:
場景 2:用戶切換出去
在這個場景中系統會 stop 這個 activity,但不會立刻結束它。
狀態處理
當你的 activity 進入 Stopped 狀態,系統會使用 onSaveInstanceState 去保存應用的狀態以防系統一段時間後終止這個應用的進程 (請看下面)。
假設應用的進程沒有被終止,這個應用的實例會常駐在內存,保存全部狀態。當這個 activity 回到前臺工做時,它會恢復這些狀態。你不須要從新初始化這些以前已生成的組件。
觸發緣由:
場景 3:屏幕旋轉或其餘配置變化
狀態處理
像屏幕旋轉或窗口大小改變,這種配置變化應該可以讓用戶在變化後繼續無縫使用。
onCreate
和 onRestoreInstanceState
中的 Bundle 對象是相同的。觸發緣由:
場景 4:應用被系統暫停
這個場景不適用於如下狀況:
掘金翻譯計劃 是一個翻譯優質互聯網技術文章的社區,文章來源爲 掘金 上的英文分享文章。內容覆蓋 Android、iOS、前端、後端、區塊鏈、產品、設計、人工智能等領域,想要查看更多優質譯文請持續關注 掘金翻譯計劃、官方微博、知乎專欄。