iT邦幫忙

0

Android 生命週期 - Activity

  • 分享至 

  • xImage
  •  

為什麼來寫這個呢?因為我在面試時發現自己忘光光QQ

Activity lifecycle

tags: Android activity lifecycle

activity

doc

onCreate

一定要在此做 setContentView()
和 viewModel 關聯,並為類別內的變數做出實體
會接受 savedInstanceState 作為 function 傳入參數,可在此讀取保存的狀態

onStart

對用戶可見,ui 以繪製完成,但無法響應用戶操作,為互動響應做準備

onResume

和用戶響應,是大多核心功能會執行的生命週期
當現在的 activity 轉移焦點時,ex. 出現 dialog ,生命週期會到 onPause , 因此如果有東西在 onPause 銷毀掉,建議也要實現 onResume 來讓資源重新載入到用戶互動的生命週期裡面

在多螢幕狀態中,只有一個 activity 會獲得 focus,其他的都會到 onPause 的階段 ; 而同樣讓 focus 遠離的行為包含來電、切換到另一個 activity

onPause

在此生命週期的 Activity 仍可以更新,像是 google map 的導航,就可以讓手機一邊和其他應用程式互動,一邊顯示導航即時更新

對於用戶叫出 recent application 功能,或是按下返回鍵,都會經過此週期
:::info
不應在此儲存狀態數據或 io ,因為任務可能會無法完成,變到下一階段
:::

onStop

已不可見,應在此釋放資源,例如暫停動畫、gps 從精確改為大略,並做 io 操作和保存 ui 狀態

onRestart

已停止的 activity 重啟時,接到 onStart

onDestory

用戶關閉或是 os 關閉,在 configurationChange 會經過

應釋放 onStop 沒釋放的所有資源

onSaveInstanceState

主動關閉不觸發,os 殺掉、旋轉會觸發,不同的是,會主動將有 id 的 view 狀態記錄下來
custom view 的狀態保存

onRestoreInstanceState

也能夠過在此拿到 saveInstanceState 的 bundle ,且因這此有在 bundle 不為 null 的時候呼叫,所以無需檢查,而這個會在 onStart 之後調用

configurationChange

旋轉、切換語言

onPause -> onStop ->onDestory -> onCreate -> onStart -> onResume


整個走一遍

pause

dialog, 多螢幕工作

onPause -> onResume

暫時離開應用

從 recent application 離開,透過 home 鍵回到主頁

onPause -> onStop ->(onReStart 看是否是新實體 ->) onstart -> onResume

activity返回主螢幕會發生什麼事?

一是透過返回鍵,關閉應用到主頁,用戶主動關閉

onPause -> onStop -> onDestory


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言