Activity七大生命周期详解
首先,流程圖來一張:
介紹生命周期之前,先提一下任務的概念:
任務其實就是activity 的棧,換句話說任務就是” 應用程序” 。
棧底的是啟動整個任務的Activity,棧頂的是當前運行的用戶可以交互的Activity,當一個activity 啟動另外一個的時候,新的activity 就被壓入棧,并成為當前運行的activity。而前一個activity 仍保持在棧之中。當用戶按下BACK 鍵的時候,當前activity 出棧,而前一個恢復為當前運行的activity。棧中保存的其實是對象,棧中的Activity 永遠不會重排,只會壓入或彈出,所以如果發生了諸如需要多個地圖瀏覽器的情況,就會使得一個任務中出現多個同一Activity 子類的實例同時存在。
Activity棧:先進后出規則
為什么需要生命周期?
Android系統是一個多任務(Multi-Task)的操作系統,可以在用手機聽音樂的同時,也執行其他多個程序。每多執行一個應用程序,就會多耗費一些系統內存,當同時執行的程序過多,或是關閉的程序沒有正確釋放掉內存,系統就會覺得越來越慢,甚至不穩定。
為了解決這個問題, Android 引入了一個新的機制– 生命周期(Life Cycle)。
Android 應用程序的生命周期是由Android 框架進行管理,而不是由應用程序直接控制。
Activity整個生命周期的4種狀態、7個重要方法
四種狀態
1.活動(Active/Running)狀態
當Activity運行在屏幕前臺(處于當前任務活動棧的最上面),此時它獲取了焦點能響應用戶的操作,屬于運行狀態,同一個時刻只會有一個Activity 處于活動(Active)或運行狀態
2. 暫停(Paused)狀態
當Activity失去焦點但仍對用戶可見(如在它之上有另一個透明的Activity或Toast、AlertDialog等彈出窗口時)它處于暫停狀態。暫停的Activity仍然是存活狀態(它保留著所有的狀態和成員信息并保持和窗口管理器的連接),但是當系統內存極小時可以被系統殺掉
3. 停止(Stopped)狀態
完全被另一個Activity遮擋時處于停止狀態,它仍然保留著所有的狀態和成員信息。只是對用戶不可見,當其他地方需要內存時它往往被系統殺掉
4. 非活動(Dead)狀態
Activity 尚未被啟動、已經被手動終止,或已經被系統回收時處于非活動的狀態,要手動終止Activity,可以在程序中調用”finish”方法。
七個重要方法:
onCreate() 第一次創建時執行:做界面初始化的工作:控件的實例化,監聽器的設置(恢復現場)
onStart() 顯示窗口時執行,創建視圖—–可見不可交互
onResume() 可獲取用戶焦點時執行—–可見可交互
onPause() 失去用戶焦點時執行–可見不可交互(跳轉,來電,退出)
OnStop() 窗體不顯示——-不可見不可交互
onDestroy() 銷毀時執行onStop() 關閉窗口時執行
onRestart() 重新顯示窗口時執行
各種情況下生命周期的回調規律
1.打開主界面,后退鍵退出——->全生命周期
打開主界面,切換橫屏豎屏。
Onpause–onstop–ondestroy oncreate–onstart–onresume
打開主界面,點擊該界面中捆綁退出事件的按鈕后退出
全生命周期歷程
打開主界面,按鈕進入第二個頁面,再從第二個頁面返回—–》
Oncreate-onstart-onresum onpause—onstop onrestart—onstart—onresum
5.打開主界面, 電話進入及掛機,再次顯示主界面
Oncreate-onstart-onresum
來電:
Onpause—onstop
掛機:
Onrestart—onstart–onresume
6.打開主界面,HOME鍵退出,再次啟動app
HOME鍵:
Onpause—onstop
再次啟動app
Onrestart—onstart–onresume
生命周期的作用:
①當用戶接一個電話或切換到另一個程序不會崩潰
②當用戶后臺運行程序時不會銷毀有價值的系統資源
③當用戶離開再返回你的應用時不會丟失用戶的進程
④當手機屏幕進行橫豎屏切換的時候不會崩潰或者丟掉用戶的進程
拓展:
protected void onCreate(Bundle savedInstanceState)
括號的參數的意思就是:現場保護時存入的數據,也就是說突然來電話了,程序中斷,數據不會丟失,數據會回調保存。
Android保護現場的方法:onSavedInstanceState
恢復現場的方法:onRestorInstanceState onCreate
總結
以上是生活随笔為你收集整理的Activity七大生命周期详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 艰难抉择,WPS和Office哪个好?
- 下一篇: iOS11以及iPhone X遇到的相关