iT邦幫忙

2019 iT 邦幫忙鐵人賽

DAY 2
1
Software Development

Kotlin 2018連續開發30天系列 第 2

Kotlin 2018連續開發30天 day 1 Activity生命週期

  • 分享至 

  • xImage
  •  

Activity 完整生命週期

完整的生命週期包含可視的生命週期 可視的生命週期包含前台的生命週期

  1. onCreate Activity的創建
  2. onStart Activity的啟動
  3. onResume Activity的恢復
  4. onPause Activity的暫停
  5. onStop Activity的停止
  6. onDestroy Activity的銷毀

完整的生命週期

Activity創建到破壞的全部過程
6.onDestroy
釋放Activity所有資源
不能保證調用的時機


可視的生命週期

使用者可觀看到離開使用者視線的過程
onStart->onStop
onStop 因onDestroy 不保證調用時機 保存所有Activity使用狀態與邏輯


前臺的生命週期

onResume -> onPause


其餘的生命週期狀態

onRestart 初期創建時不會調用 當從後台調往可視時調用
onSaveInstanceState 儲存Activity的狀態訊息
onRestoreInstanceState 恢復Activity的狀態訊息


因使用硬體導致的生命週期變化(Home)(Back)(Menu)

啟動過程
onCreate -> onRestart(不一定調用) -> onStart -> onRestoreInstanceState(不一定調用) -> onResume
關閉過程
onPause->onSaveInstanceState(不一定調用)->onStop->onDestroy

當按下(Back)
onPause->onStop->onDestroy
當按下(Back)
onPause->onSaveInstanceState->onStop
當跳出後重新進入
onRestart-> onStart ->onResume


頁面切換的生命週期

兩個Activity(A)(B)跳轉 A生命週期
(A)onCreate->onStart->onResume->onPause
intent 跳轉
(B)onCreate
(A)onPause->onSaveInstanceState->onStop

兩個Activity(A)(B)跳轉 B跳轉回A生命週期

(A)onCreate->onStart->onResume->onPause
intent A跳轉B
(B)onCreate
(A)onPause->onSaveInstanceState->onStop
(back) B跳轉A
(B)onCreate->onStart->onResume->onPause
(A)onRestart->onStart->onResume
(B)onStop->onDestory

*在onPause中 不建議執行複雜的操作 否則會影響下一個Activity的啟動速度
*對於onSaveInstanceState方法 在頁面關閉時都會執行 但是在非系統原因的關閉 不會執行默認的恢復數據操作 即onRestoreInstanceState


由系統原因導致的生命週期變化(例旋轉螢幕)

onCreate->onStart->onResume->onPause->onSaveInstanceState->onStop->onDestroy->onCreate->onStart->onRestoreInstanceState->onResume
直向轉橫向 系統會關閉Activity 啟用新的Activity 並使用橫向的library
*onRestoreInstanceState需要在onResume前執行 確保數據的正確恢復並顯示無誤 onSaveInstanceState需要在onPause後執行 確保使用者不再進行額外的輸入 儲存正確的訊息


上一篇
Kotlin 2018連續開發30天
下一篇
Kotlin 2018連續開發30天 day2 fragment生命週期
系列文
Kotlin 2018連續開發30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言