Android:Activity生命週期

 

 

Activity所在的棧爲後進先出(Last In First Out)結構。

 

Activity狀態

  1. 運行狀態(S1):

    • 該Activity處於與User交互的狀態,即是位於棧頂的Activity。

    • 系統一般不考慮回收該處內存。

  2. 暫停狀態(S2):

    • Activity不再處於棧頂(Another activity comes in front of the activity),但仍然是可見的。

    • 系統只有在內存極低時才考慮回收內存。

  3. 停止狀態(S3):

    • Activity不處於棧頂&完全不可見(The activity is no longer visible)。

    • 系統會保存該Activity相應的狀態和變量,但內存被回收的機率增大,即不能保證該Activity沒有被回收。(Process is killed)

  4. 銷燬狀態(S4):

    • Activity從棧中被移除(調用finish()或點擊Back鍵)。

    • 重點回收該狀態下的Activity佔用的內存。

 

Activity生存期

  1. onCreate()

    • Activity被創建時調用,完成各種初始化操作。

  2. onStart()

    • Activity由不可見(invisible)變爲可見(invisible)時調用。

  3. onResume()

    • Activity準備好與User交互時調用,此時activity一定位於棧頂(S1).

  4. onPause()

    • 調用了其他Activity(不再位於棧頂),關鍵數據會被保存,但仍處於可見狀態(visible, S2).

  5. onStop()

    • Activity變爲不可見(invisible)時調用(S3)。

  6. onDestroy()

    • Activity被銷燬前調用(S4)。

  7. onRestart()

    • Activity由停止狀態變爲運行狀態前調用(S3→S1,即不可見→可見)。

    • 由於onStop()時Activity的內存可能已經被回收,所以在調用onStart()變爲可見前要調用onRestart()作準備。

補充

  • 除了onRestart()外,其餘生存期爲一一對應關係

  • onCreate() vs onDestroy()

  • onStart() vs onStop()

  • onResume vs onPause()

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