Activity生命週期的分析

onCreate 首次創建 可以做一些佈局的初始化,通常是和onDestory對應,只調用一次
onStart 啓動 和onstop 對應,表示啓動,這時候其實已經在後臺可見了,前臺不可見,無法與用戶交互
onResume 得到焦點 和 onPause對應
onPause 失去焦點
onStop 停止
onDestory 銷燬資源

如下圖所示

精確得講
onCreate -onStart -onResume 只有在onResume中纔可以點擊,我們的view事件才能傳遞給activity對象,activity對象分配給自己的android.R.id.content ,然後事件開始分發。這也是我們爲什麼要調用setContenView的原理,就是把我們的佈局填充到這個資源裏。
onStart和onResume有什麼區別,區別就是一個是在後臺準備完畢,一個是已經和窗口得句柄綁定了,中間有一步onAttchWindow的操作。
onRestart 對象沒被殺死,當然可以重啓。
onPause onStop 第一種部分覆蓋,比如彈出框,下拉通知欄等,第二種全覆蓋,也就是完全看不到。

還有圖中顯示的onPause以後2種特殊情況屬於系統異常情況。

首先來說幾個常用操作,
       1. 手機返回鍵調用的步驟 ------     onPause-onStop-onDestory
       2. 手機home鍵--------   這個類似我們以前玩的小霸王裏的暫停鍵一樣,他不會銷燬當前的activity,只是退到後臺,所以生命週期是 onPause-onStop,反之,恢復onRestart-onStart-onResume,.不過有些類似透明主題的activity不會調用onstop

       3.打開另一個activity,或者界面給覆蓋的話 覆蓋分爲2種,一種是還能看到覆蓋前的activity 執行onPause ,還有一種就是看不到覆蓋前的activity, 執行onPause-onStop,

2.和3的情況下,如果系統不足,都會被異常銷燬

其實要明白這些,有幾句話很重要
       onCreate ,onDestory對應
       onstart onstop對應
       onPause onResume對應。 一個新activity的onResume必須等待前一個activity的 onPause執行完成後才能執行。
       onPause,onStop,2個雖然都是已經不在棧頂了,但onPause和窗口管理器還有微弱的連接,onStop則已經失聯了。

onSaveInstanceState 一般在下面幾個場景調用。
      1.系統資源緊張會被調用,但我們無法捕捉,這是由系統通知你我要回收了
      2.屏幕翻轉調用,保存數據。
      3.按home鍵,系統會調用這個方法保存view的狀態,

可能在onPause之前,也可能在onPause之後,這個具體和SDK版本有關,不確定

onRestoreInstanceState
      恢復資源,在onStart後調用。

我們經常做的操作不是在activity的onCreate方法裏判斷是否重新創建來恢復我們的fragment

系統在有些view在異常狀態下也會調用者2個方法來保存數據。如textview。這些view裏面都有重寫這2個方法

,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章