Fragment 生命周期的详情
Fragment每個(gè)生命周期方法的意義、作用(注意紅色的不是生命周期方法):
setUserVisibleHint():設(shè)置Fragment可見(jiàn)或者不可見(jiàn)時(shí)會(huì)調(diào)用此方法。在該方法里面可以通過(guò)調(diào)用getUserVisibleHint()獲得Fragment的狀態(tài)是可見(jiàn)還是不可見(jiàn)的,如果可見(jiàn)則進(jìn)行懶加載操作。
onAttach():執(zhí)行該方法時(shí),Fragment與Activity已經(jīng)完成綁定,該方法有一個(gè)Activity類型的參數(shù),代表綁定的Activity,這時(shí)候你可以執(zhí)行諸如mActivity = activity的操作。
onCreate():初始化Fragment。可通過(guò)參數(shù)savedInstanceState獲取之前保存的值。
onCreateView():初始化Fragment的布局。加載布局和findViewById的操作通常在此函數(shù)內(nèi)完成,但是不建議執(zhí)行耗時(shí)的操作,比如讀取數(shù)據(jù)庫(kù)數(shù)據(jù)列表。
onActivityCreated():執(zhí)行該方法時(shí),與Fragment綁定的Activity的onCreate方法已經(jīng)執(zhí)行完成并返回,在該方法內(nèi)可以進(jìn)行與Activity交互的UI操作,所以在該方法之前Activity的onCreate方法并未執(zhí)行完成,如果提前進(jìn)行交互操作,會(huì)引發(fā)空指針異常。
onStart():執(zhí)行該方法時(shí),Fragment由不可見(jiàn)變?yōu)榭梢?jiàn)狀態(tài)。
onResume():執(zhí)行該方法時(shí),Fragment處于活動(dòng)狀態(tài),用戶可與之交互。
onPause():執(zhí)行該方法時(shí),Fragment處于暫停狀態(tài),但依然可見(jiàn),用戶不能與之交互。
onSaveInstanceState():保存當(dāng)前Fragment的狀態(tài)。該方法會(huì)自動(dòng)保存Fragment的狀態(tài),比如EditText鍵入的文本,即使Fragment被回收又重新創(chuàng)建,一樣能恢復(fù)EditText之前鍵入的文本。
onStop():執(zhí)行該方法時(shí),Fragment完全不可見(jiàn)。
onDestroyView():銷(xiāo)毀與Fragment有關(guān)的視圖,但未與Activity解除綁定,依然可以通過(guò)onCreateView方法重新創(chuàng)建視圖。通常在ViewPager+Fragment的方式下會(huì)調(diào)用此方法。
onDestroy():銷(xiāo)毀Fragment。通常按Back鍵退出或者Fragment被回收時(shí)調(diào)用此方法。
onDetach():解除與Activity的綁定。在onDestroy方法之后調(diào)用。
Fragment生命周期執(zhí)行流程(注意紅色的不是生命周期方法):
Fragment創(chuàng)建:setUserVisibleHint()->onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume();
Fragment變?yōu)椴豢梢?jiàn)狀態(tài)(鎖屏、回到桌面、被Activity完全覆蓋):onPause()->onSaveInstanceState()->onStop();
Fragment變?yōu)椴糠挚梢?jiàn)狀態(tài)(打開(kāi)Dialog樣式的Activity):onPause()->onSaveInstanceState();
Fragment由不可見(jiàn)變?yōu)榛顒?dòng)狀態(tài):onStart()->OnResume();
Fragment由部分可見(jiàn)變?yōu)榛顒?dòng)狀態(tài):onResume();
退出應(yīng)用:onPause()->onStop()->onDestroyView()->onDestroy()->onDetach()(注意退出不會(huì)調(diào)用onSaveInstanceState方法,因?yàn)槭侨藶橥顺?#xff0c;沒(méi)有必要再保存數(shù)據(jù));
Fragment被回收又重新創(chuàng)建:被回收?qǐng)?zhí)行onPause()->onSaveInstanceState()->onStop()->onDestroyView()->onDestroy()->onDetach(),重新創(chuàng)建執(zhí)行onAttach()->onCreate()->onCreateView()->onActivityCreated()->onStart()->onResume()->setUserVisibleHint();
橫豎屏切換:與Fragment被回收又重新創(chuàng)建一樣。
官方生命周期圖
轉(zhuǎn)載于:https://www.cnblogs.com/fajieyefu/p/6092465.html
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的Fragment 生命周期的详情的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 【夯实Mysql基础】mysql exp
- 下一篇: XidianOJ 1146 万神的竞赛