Activity生命週期理解

在Android應用程序運行時,Activity的活動狀態由Android以Activity棧的形式管理,當前活動的Activity位於棧頂。隨着應用程序之間的切換、關閉等,每一個Activity都有可能從活動狀態轉入非活動狀態,固然,也能夠從非活動狀態轉入活動狀態。測試

下面,咱們藉助一個關於Activity生命週期模型圖進行理解。spa

 

 

 

 從圖中能夠看出來,在Activity的生命週期中,會有以下方法會被系統回調:blog

  1. void onCreate(Bundle savedInstanceState):建立Activity時會被回調。
  2. void onStart():首次建立Activity時在onCreate方法以後執行,但會有另一種狀況,後面會進行分析,總之,就是啓動Activity時被回調。
  3. void onRestart():該活動在Activity沒有被銷燬時會一直存在Activity棧中,從新啓動Activity時會被回調。
  4. void onResume():用戶在進行Activity切換時,恢復相應的Activity時回調。在void onStart()方法後必定會回調的方法。
  5. void onPause():Activity被暫停時回調,活動會被壓倒棧中。
  6. void onStop():Activity被中止時回調。
  7. void onDestroy():Activity被銷燬時回調,徹底從系統內存中移除。

總結概括起來,Activity會有四種狀態:生命週期

  •  運行狀態:當前Activity位於前臺,用戶可見,能夠得到焦點。
  • 暫停狀態:其餘Activity位於前臺,該Activity依然可見,只是不能得到焦點。
  • 中止狀態:該Activity不可見,失去焦點。
  • 銷燬狀態:該Activity結束,或Activity所在的進程被結束。

我經過程序測試得出Activity的7個方法會在什麼時候進行回調。進程

  • 當前程序入口爲該Activity,當程序啓動時將會自動啓動並執行該Activity,會回調onCreate()、onStart()、onResume()三個方法回調,如圖

     

  • 當切換到程序的另一個Activity時,MainActivity不能再獲取焦點,但依然可見,此時該Activity進入「暫停」狀態,會回調onPause()方法,如圖

 

 

  •  當返回從另一個Activity返回到MainActivity時,該Activity會再次進入「運行」狀態,會回調onStop()、onRestart()、onStart()、onResume()方法,如圖

  • 當直接按下home鍵返回系統桌面時,當前該Activity失去焦點,但並未銷燬,只是進入「中止」狀態,會回調onPause()、onStop()方法,如圖

  • 當再次從系統桌面進入程序時,會回調onRestart()、onStart()方法,如圖

  • 當直接退出程序時,會回調onPause()、onStop()、onDestroy()方法,如圖

 

 由以上實驗得onCreate和onDestroy該方法在週期中只會被調用一次。內存

相關文章
相關標籤/搜索