標籤:android android開發
本章主講Activity的生命週期
Activity整個生命週期有四種狀態,7個方法,3個嵌套迴圈
狀態:
1. Activity/Running 活動狀態
指的是目前使用者正在互動的activity狀態
2. Paused 暫停狀態
指的是當前activity可見,但是被多士或者對話方塊遮罩時狀態
3. Stopped 停止狀態
指的是被新的建立的activity遮擋時的狀態,它保留了之前的操作資訊和狀態,但是如果系統記憶體不夠,可能會被killed
4. Dead 非使用中
指的是當activity尚未啟動,或者被系統回收時處於非使用中,可以手動調用finish()方法,終結activity
生命週期:
1. onCreate();
在activity第一次建立時被調用,可以做一些變數初始化,綁定資料,顯示View視圖
2. onStart();
建立完activity後,開始顯示視圖到介面上
3. onRestart();
當activity停止,或者中斷後,重新顯示視圖時,會調用該方法
4. onResume();
視圖在介面顯示後,可以與使用者互動了
5. onPause();
當跳轉另一個activity時,或者停止前,或者銷毀前調用
6. onStop();
當被另一個activity遮擋時調用,
7. onDestroy();
當activity銷毀時調用
嵌套迴圈:
1. activity完整生命週期
從onCreate() 到 onDestroy()
2. activity可視生命週期
從onStart() 到 onStop()
3. activity前台生命週期
從onResume() 到 onPause();
例如:使用LogCat列印生命週期 過程是
1.完整生命週期
onCreate() -> onStart() -> onResume() -> onPause() -> onStop() -> onDestroy()
2. 運行activity,生命週期過程是
onCreate() -> onStart() -> onResume()
3. 橫豎屏切換時生命週期時
onSaveInstanceState() -> onPause() -> onStop() -> onDestroy() -> onCreate() -> onStart() -> onRestoreInstanceState() -> onResume
4.當我們在AndroidMenifest.xml中的相應的activity中添加android:configChanges="orientation"時
再橫豎屏切換,生命週期只會執行onConfigurationChanged()方法,
5. 一個activity跳轉另一個activity聲明周期過程是
第一個activity
onSaveInstanceState() ->
onPause() ->
開始第二個activity
onCreate() ->
onStart() ->
onResume() ->
第一個activity停止了
onStop() ->
此時,返回第一個activity
onRestart() ->
onStart() ->
onResume() ->
此時,第二個activity銷毀了
onStop() ->
onDestroy()
總結:activity跳轉到新的activity時,舊的activity會被儲存現場,並且停止了,新的activity被建立了,如果返回舊的activity時,新的activity會被銷毀掉了,舊的activity會執行onRestart()方法,然後顯示介面,並可互動狀態,所以onCreate()方法只會被調用一次,但是在橫豎屏切換時,那就相當於重新執行了一遍生命週期,銷毀橫豎屏前的對象,重新建立新的activity,如果在清單中配置了android:name="orientation"那麼,就會執行onConfigurationChanged()方法,並且生命週期不會重新執行一遍
android開發 - Activity生命週期