Fragment 生命週期的詳情
Fragment每個生命週期方法的意義、作用(注意紅色的不是生命週期方法):
setUserVisibleHint():設定Fragment可見或者不可見時會呼叫此方法。在該方法裡面可以通過呼叫getUserVisibleHint()獲得Fragment的狀態是可見還是不可見的,如果可見則進行懶載入操作。
onAttach():執行該方法時,Fragment與Activity已經完成繫結,該方法有一個Activity型別的引數,代表繫結的Activity,這時候你可以執行諸如mActivity = activity的操作。
onCreate():初始化Fragment。可通過引數savedInstanceState獲取之前儲存的值。
onCreateView():初始化Fragment的佈局。載入佈局和findViewById的操作通常在此函式內完成,但是不建議執行耗時的操作,比如讀取資料庫資料列表。
onActivityCreated():執行該方法時,與Fragment繫結的Activity的onCreate方法已經執行完成並返回,在該方法內可以進行與Activity互動的UI操作,所以在該方法之前Activity的onCreate方法並未執行完成,如果提前進行互動操作,會引發空指標異常。
onStart():執行該方法時,Fragment由不可見變為可見狀態。
onResume():執行該方法時,Fragment處於活動狀態,使用者可與之互動。
onPause():執行該方法時,Fragment處於暫停狀態,但依然可見,使用者不能與之互動。
onSaveInstanceState():儲存當前Fragment的狀態。該方法會自動儲存Fragment的狀態,比如EditText鍵入的文字,即使Fragment被回收又重新建立,一樣能恢復EditText之前鍵入的文字。
onStop():執行該方法時,Fragment完全不可見。
onDestroyView():銷燬與Fragment有關的檢視,但未與Activity解除繫結,依然可以通過onCreateView方法重新建立檢視。通常在ViewPager+Fragment的方式下會呼叫此方法。
onDestroy():銷燬Fragment。通常按Back鍵退出或者Fragment被回收時呼叫此方法。
onDetach():解除與Activity的繫結。在onDestroy方法之後呼叫。
Fragment生命週期執行流程(注意紅色的不是生命週期方法):
Fragment建立:setUserVisibleHint()->onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume();
Fragment變為不可見狀態(鎖屏、回到桌面、被Activity完全覆蓋):onPause()->onSaveInstanceState()->onStop();
Fragment變為部分可見狀態(開啟Dialog樣式的Activity):onPause()->onSaveInstanceState();
Fragment由不可見變為活動狀態:onStart()->OnResume();
Fragment由部分可見變為活動狀態:onResume();
退出應用:onPause()->onStop()->onDestroyView()->onDestroy()->onDetach()(注意退出不會呼叫onSaveInstanceState方法,因為是人為退出,沒有必要再儲存資料);
Fragment被回收又重新建立:被回收執行onPause()->onSaveInstanceState()->onStop()->onDestroyView()->onDestroy()->onDetach(),重新建立執行onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()->setUserVisibleHint();
橫豎屏切換:與Fragment被回收又重新建立一樣。
官方生命週期圖
相關文章
- Fragment的生命週期Fragment
- Fragment生命週期Fragment
- 關於Fragment的生命週期Fragment
- Fragment生命週期筆記Fragment筆記
- fragment生命週期(總結)Fragment
- Android Fragment生命週期深入探究AndroidFragment
- Android Fragment的生命週期和返回棧AndroidFragment
- Android Fragment生命週期——多螢幕支援AndroidFragment
- vue生命週期詳解Vue
- React生命週期詳解React
- 詳解vue生命週期Vue
- Service生命週期詳解
- Vue的生命週期的詳解Vue
- 關於Fragment可見與不可見時的生命週期Fragment
- Java類的生命週期詳解Java
- Android | Activity和Fragment最全生命週期+發現大牛AndroidFragment
- 詳解Vue生命週期【上】Vue
- React 元件生命週期詳解React元件
- React元件生命週期詳解React元件
- Android View的生命週期詳解AndroidView
- View生命週期與Activity生命週期的關係View
- 詳解 Vue 生命週期實現Vue
- Android Activity生命週期詳解Android
- 生命週期
- Flutter 的生命週期Flutter
- SQL的生命週期SQL
- Laravel的生命週期Laravel
- vue的生命週期Vue
- App的生命週期APP
- View的生命週期View
- Servlet的生命週期Servlet
- bean的生命週期Bean
- Activity的生命週期和啟動模式詳解模式
- PHP 生命週期PHP
- Flutter - 生命週期Flutter
- sessionStorag 生命週期Session
- Activity生命週期
- vue - 生命週期Vue