ViewPager+Fragment(懶加載)

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的緩存機制

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容