viewpage+fragment 比如下面有navitation 的menu有五個itme? T1 T2 T3 T4 T5?
什么是緩存頁面?什么是預(yù)加載?
緩存是開辟一個空間預(yù)加載是向空間存放東西,如果設(shè)置為setOffscreenPageList(1),從T1 到? ? T3 會緩存T2和T4,回預(yù)加載T4,
setOffscreenPageList(2) 左右各緩存2個 加上當(dāng)前 緩存了5個,設(shè)置0無效還是緩存左右各1個。如果左邊或者右邊沒有頁面則不緩存。
setOffscreenPageList(1)預(yù)加載 t1到T3 會預(yù)加載T4? ?從T3到? ? ? ?t2會預(yù)加載
預(yù)加載越多就會越卡頓累計到后面就會OOM,懶加載實現(xiàn)就很必要(微信,頭條..都是運用的懶加載)。
懶加載
從T1 到T3? setUserVisibleHint(boolean isvisible)次函數(shù)為非生命周期函數(shù)先執(zhí)行
T3 FALSE? ?T1 FALSE? T2 TRUE
執(zhí)行3的生命周期函數(shù)
1.setUserVisibleHint(boolean isvisible)//判斷Fragment是否可見(如果可見加載,不可見停止)
上面的方法預(yù)加載的T3是false 加載控件需要確定ui初始化 ,所以需要設(shè)置tag? isViewCreated()判斷Fragment走OnCreatView方法
2.我們手動設(shè)置的isViewCreated()方法在OnCreatView設(shè)置成true 默認是false.由于非生命周期先執(zhí)行所以 一直是fase不能顯示頁面。一直顯示加載。所以顯示和終止的方法寫在setUserVieibleHint()是不安全的? 放在onCreatView()里面直接寫
3從不可見到可見才算可見? ?從可見到不可見才算不可見 記錄上一次是什么狀態(tài),上一次 是false這一次是ture才可見
4Fragment 跳轉(zhuǎn)到activity的時候 當(dāng)前Fragment 停下。分別執(zhí)行fragment的onPause() 和onResume()中增加分發(fā)
5Fragment里面嵌套Fragment
比如T1一個Frgment T2 Fragment里面有子Fragment 加載T1的時候會加載T2l里面的子fragment預(yù)加載了
需要判斷Fragmetn是否真的可見,運行到有子fragment的父fragment 里面不加載問題需要手動分發(fā)
ViewPager2
setUserVisibleHint(boolean isvisible) 這個方法過時,用setMaxLifeCircle()代替處理差不多方式不一樣。緩存方面第一代用的poplate 加適配器? 第二代用的是recycleview的緩存機制