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被回收又重新創建一樣。

官方生命周期圖:


?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容