Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android學習之 Activity 生命周期(LifeCycle)

Android學習之 Activity 生命周期(LifeCycle)

編輯:Android開發實例

今天學習Activity LifeCycle.

      在Android,系統把Activities當做一個Activity Stack進行管理。當一個新的Activity被啟動時,它將放在這個Activity Stack的最頂部,然後成為一個Running Activity. 而上一個Activity總是在這個Activity的下一層,且將不會再顯示到前端直到一個新的Activity存在! 

     一個Activity本質上來說包括以下四個狀態:

   1. 當一個Activity在屏幕的前台(foreground)時(同時也在Activity Stack的頂部)時,這個Activity就處在active或running狀態。

   2. 當一個Activity失去了焦點,但是可見(例如:一個新的不是全屏的activity處於Activity Stack頂部)時,Activity處理Paused狀態. 一個被Paused的Activity是完全可用的(alive)(這時的Activity將保存所有的狀態與成員信息且仍處理Window manager 的attach范圍), 這種狀態下的Activity在系統極度缺少內存的情況下被系統殺掉!

    3. 如果一個Activity完全被另一個Activity覆蓋時,該Activity就處理Stoped狀態。它將仍然保存所有狀態與成員信息,但是,它對用戶已經不在可見,所以,它的窗口被隱藏了。當系統需要內存時,系統會經常殺掉這種狀態的Activity。

    4.當一個activity處理paused或stopped狀態時,系統可以清除這個activity的內存而不調用這個activity的finish方法或者簡單的結束它的進程,當它被再次顯示給用戶,它需要再次完全啟動,並還原到最近的一狀態。

 

下面所說的方法可以理解為Activity進入對應狀態時會被調用的方法!

 

下面的一張圖說明了Activity的狀態變化路線圖。長方形表示你可以覆蓋這些方法,以便在Activity狀態切換之間執行一定的動作。含有顏色的橢圓表示Activity可能經常處於的狀態!

     

下面是三個在你控制或監控(monitoring)Activity過程中比較重要的三個循環:

1. 全個生命期(The entire lifetime). 這個生命周期發生在第一調用onCreate(Bundle)方法到最終的對onDestroy()的調用。一個Acitivity可以在onCreate()方法中對全局的狀態進行初始化,在onDestroy中釋放所有用到的資源。例如:如果需要一個後台運行的從網絡中下載數據的線程,那麼可以在onCreate()函數中進行創建,在onDestroy()中停止。

2. 可視生命期(visible lifetime). 這個生命期從調用onStart()方法開始到調用onStop()函數結束。在該生命期中,用戶可以在屏幕上看到這個activity,盡管他可能不在前台,不能與用戶進行交互,在這個生命期中,你可以維護那些你要顯示給用戶看的數據。例如:為了監控所有可以對你的UI產生影響的消息,你可以在onStart()函數中注冊一個BroadcastReceiver,然後當用戶不能看到你所要顯示的信息,在onStop()函數中反注冊它。onStart()與onStop()方法可以被調用多次。

3. 前台生命期(foreground lifetime).前台生命期從onResume()到onPause()。在這期間,這個activity在其他activity的前面,且正在與用戶進行交互。一個activity可以很頻繁的在Resumed與Paused狀態之間進行切換。例如當設備Sleep時、一個Activity result被傳遞時、一個新的Intent被傳遞時等。所以,運行在這期間的代碼必須時快速輕量級的。

 

一個activity的整個生命周期定義在下面的activity方法中。你可以覆蓋這些方法,使得activity在不同狀態之間執行一定的動作。所有的activities都將實現onCreate(Bundle)方法去完成初始化設置工作,在實現這些方法的過程中,你需要經常調用這些方法的superclass.

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();
 }

 

Most importantly, any changes made by the user should at this point be committed (usually to the ContentProvider holding the data).

重要一點:用戶操作的變化都應該在這時進行保存!通常使用ContentProvider進行保存!

 

以上資料是我翻譯自Android 3.0 Doc. 懇請高手指點!

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved