Activity的生命週期【翻譯】

      在android系統中用activity棧來管理啓動的Activity。每次啓動一個新的Activity,它會被置於棧頂,並且成爲當前活動窗口,原來的Activity還保留在棧中,在當前新啓動的窗口下面,而且在新的窗口關閉以前,不會再出現給用戶看到。 前端

      在android系統中用activity棧來管理啓動的Activity。每次啓動一個新的Activity,它會被置於棧頂,並且成爲當前活動窗口,原來的Activity還保留在棧中,在當前新啓動的窗口下面,而且在新的窗口關閉以前,不會再出現給用戶看到。
       Activity有四個狀態:
      1)若是Activity是當前窗口,而且在Activity棧頂,狀態爲running。
      2)若是Activity已經失去了焦點,再也不是當前窗口,可是依然能夠看到(這種狀態能夠出如今,新創建的窗口是對話框式等不佔全屏的窗口時),狀態爲paused。這個狀態下的Activity依然是活躍的(它維護全部狀態,記錄信息而且和窗口管理服務保持關聯),可是在系統存儲空間極限時可以被銷燬。
      3)若是Activity的窗口被新創建的窗口徹底遮住,狀態爲stopped。它依舊維持各類狀態,記錄信息,可是它再也不爲用戶可見(若是用戶使用物理鍵盤返回鍵,那麼當前窗口從running狀態,通過onPause(),onStop(),onDestroy()被銷燬,以前被覆蓋爲stopped狀態的Activity通過onRestart(),onStart(),onResume()轉爲running狀態),它的窗口被隱藏,一般在空間緊張的時候被系統銷燬。
      4)若是Activity處於stopped或者paused狀態,系統能夠經過調用finish函數或者直接關閉進程的方式釋放它,若是須要再使用,必須從新加載並執行到以前的狀態。 java

      下面的框圖給出了Activity生命週期中幾個狀態的轉換。矩形表示狀態轉換過程所須要執行的回調方法,這些回調方法是能夠重寫的。帶顏色的曲邊矩形表示Activity的主要狀態。 android

      在跟蹤Activity生命週期時,有三個比較重要的循環:
      1)整個生命週期發生在第一個回調方法onCreate(Bundle)和銷燬的回調方法onDestroy()之間。Activity在onCreate()方法中執行全局的初始化操做,在onDestroy()中釋放全部的資源。例如,在有一個在後臺從網絡上下載數據的線程在執行,這個進程可能在onCreate()方法中建立,而後在onDestroy()中被終止。
      2)用戶能夠看到的週期位於onStart()方法和onStop()方法之間。在這之間,用戶能夠在屏幕上看到窗口,即便它不是當前與用戶交互的窗口。在這期間,維護着與用戶交互所需的各類資源。例如,能夠在onStart()方法中註冊一個BroadcastReceiver來接收全部可以影響UI的變化所發出的廣播,而後當用戶什麼都看不到的時候,在onStop()方法中註銷這個接收器。伴隨着窗口的出現和隱藏,這兩個方法能夠屢次調用。
  網絡

      3)Activity在前端執行,在onResume()方法和onPause()方法之間。這期間,Activity是當前與用戶進行交互的窗口,這兩個方法也是能夠屢次執行的。 函數

      Activity有一組方法來維護整個生命週期,這些方法均可以被重寫來完成用戶指定的動做。全部的Activity類都會重寫onCreate(Bundle)進行初始化;許多狀況下也會重寫onPause()方法(many will also implement onPause() to commit changes to data and otherwise prepare to stop interacting with the user)。注意,在重寫這些方法的最後,必定要調用父類的方法:  spa

public class Activity extends ApplicationContext{
      protected  void  onCreate(Bundle  savedInstanceState);
      protected  void  onStart();
      protected  void  onRestart();
      protected  void  onResume();
      protected  void  onPause();
      protected  void  onStop();
      protected  void  onDestroy();
}
相關文章
相關標籤/搜索