Activity從啓動到銷燬的過程。函數
棧頂的Activity處於活動狀態,除棧頂之外的其餘Activity處於暫停狀態或中止狀態,而被終止的Activity或已經出棧的Activity則不在棧內。動畫
隨着用戶在界面進行的操做,以及Android系統對資源的動態管理,Activity不斷變化其在Activity棧中的位置,狀態也不斷在4種狀態間轉變。隨着Activity自身狀態的變化,Android系統會調用不一樣的事件回調函數,開發人員在事件回調函數中添加代碼,就能夠在Activity狀態變化時完成適當的工做。spa
1.Activity生命週期的事件回調函數 生命週期
函數 | 是否可終止 | 說明 |
---|---|---|
onCreate() | 否 | >Android啓動後第一個被調用的函數 >經常使用來進行Activity的初始化(如建立view、綁定數據、恢復信息等) |
onStart() | 否 | >Activity顯示在屏幕上時,該函數被調用 |
onRestart() | 否 | >Activity從中止狀態進入活動狀態前,調用該函數 |
onResume() | 否 | >當Activity能夠接受用戶輸入時,該函數被調用 >此時的Activity處於Activity棧頂 |
onPause() | 否 | >Activity進入暫停狀態時,該函數被調用 >主要用來保持持久數據、關閉動畫、釋放CPU資源等 >該函數必須簡短,由於另外一個Activity必須等待該函數執行完畢後才能顯示在界面上 |
onStop() | 是 | >當Activity不對用戶可見後,該函數被調用,Activity進入中止狀態 |
onDestroy() | 是 | >Activity被終止(進入非活動狀態)前,該函數被調用 >程序主動調用finish()函數或程序被Android系統終結 |
2.Activity狀態保存/恢復的事件回調函數事件
函數 | 說明 |
---|---|
onSaveInstanceState() | 暫停或中止Activity前調用該函數,用以保存Activity的臨時信息 |
onRestoreInstanceState() | 恢復onSaveInstanceState()保存的Activity狀態信息 |
onSaveInstanceState() 和 onRestoreInstanceState() 函數不屬於生命週期的事件回調函數,onSaveInstanceState() 在Activity 被暫時中止時(或被其餘程序中斷或者鎖屏)被調用,而Activity被徹底關閉時(調用 finish() 函數)則不會被調用。當暫停的Activity被恢復時,系統調用 onRestoreInstanceState() 函數。ci
onSaveInstanceState() 函數會將界面臨時信息保存在Bundle中,onCreate() 函數和onRestoreInstanceState() 函數均可以恢復這些保存的信息。通常簡化的作法是在 onCreate() 函數中恢復保存數據,但有些特殊狀況仍是須要使用 onRestoreInstanceState() 函數恢復保存信息。如必須在界面徹底初始化完畢後才能進行的操做,或有子類來肯定是否採用默認設置等。(存疑)資源