Android:Activity生命週期

參考: 《第一行代碼:Android》 郭霖(著)ip

 

 

 

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

 

Activity狀態get

  1. 運行狀態(S1):it

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

    • 系統通常不考慮回收該處內存。ast

  2. 暫停狀態(S2):變量

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

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

  3. 中止狀態(S3):activity

    • 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()

相關文章
相關標籤/搜索