2011-9-27 20:48:00

 

2011-9-27 20:48:00


在上圖中,可以從三個階段關注Activity的生命週期:

?  整個的生命週期,指的是onCreate(Bundle)和onDestroy()之間過程。Activity在onCreate()設置所有的“全局”狀態,在onDestroy()釋放所有的資源。


? 可見的生命週期,指的是onStart()和onStop()之間的過程。在這段時間,可以看到Activity在屏幕上,儘管有可能不在前臺,不能和用戶交互。在這兩個接口之間,需要保持顯示給用戶的UI數據和資源等。onStart(),onStop()都可以被多次調用,因爲Activity隨時可以在可見和隱藏之間轉換。

? 前臺的生命週期,指的是onResume()和onPause()之間的過程。在這段時間裏,該Activity處於所有 Activity的最上面,獲得了用戶焦點。Activity可以經常性地在RESUMED和PAUSED狀態之間切換,所以在這些接口方法中的代碼應該屬於非常輕量級的,避免低效的轉換而讓用戶有等待的感覺。

由此,我們可以得出下面幾個典型的場景:

1)   Activity從被裝載到運行。則執行順序爲:onCreate() -> onStart()-> onResume();

這是個典型過程,發生在Activity被系統裝載運行時。

2)   Activity從運行到暫停,再到繼續回到運行。執行順序爲:onPause() -> onResume();

這個過程發生在Activity被別的Activity遮住了部分UI,失去了用戶焦點,另外那個Activity退出之後,這個Activity再次重新獲得運行。這個過程中該Activity的實例是一直存在。

3)   Activity從運行到停止。執行順序爲:onPause() -> onStop() ;

這個過程發生在Activity的UI完全被別的Activity遮住了,當然也失去了用戶焦點。這個過程中Activity的實例仍然存在。比如,當Activity正在運行時,按HOME鍵,該Activity就會被執行這個過程。

4)   Activity從停止到運行。執行順序爲:onRestart()-> onStart()-> onResume();

處於STOPPED狀態並且實例仍然存在的Activity,再次被系統運行時,執行這個過程。這個過程是3的逆過程,只是要先執行onRestart()而重新獲得執行。

5)   Activity從運行到銷燬。執行順序爲:onPause() -> onStop() -> onDestroy();

這個過程發生在Activity完全停掉並被銷燬了,所以該Activity的實例也就不存在了。比如,當Activity正在運行時,按BACK鍵,該Activity就會被執行這個過程。這個過程可看作是1的逆過程。

6)   被清除出內存的Activity重新運行。執行順序爲:onCreate() -> onStart()-> onResume();

這個過程看起來對用戶是透明的,並不會知道這個過程的發生,看起來如同1的執行順序,不同的是如果保存有系統被清除出內出時的信息,會在調用onCreate()時,系統以參數的形式給出,而1中onCreate()的參數爲null。

 

管理Activity生命週期

這裏說是管理Activity的生命週期,更確切的說應該是參與生命週期的管理,因爲Android系統框架已經很好的管理了這其中的絕大部分,應用開發者要做的就是在Android的框架下,

在Activity狀態轉換的各個時點上,做出自己的實現,而實現這些要做的只是在你的Activity子類裏面Override這些Activity的方法即可。

 

 

發佈了363 篇原創文章 · 獲贊 11 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章