viewpager設(shè)置緩存數(shù)量:
mViewPager.setOffscreenPageLimit(1);
后,來(lái)回切換只會(huì)調(diào)用onCreateView() -> onDestroyView()生命函數(shù)贰健,因?yàn)閂iewPager里對(duì)Fragment的回收和創(chuàng)建時(shí)胞四,如果Fragment已經(jīng)創(chuàng)建過(guò)了,那么只會(huì)調(diào)用onCreateView() -> onDestroyView()生命函數(shù)伶椿。
實(shí)現(xiàn)懶加載辜伟,并且限制加載緩存為1,需要:
1 脊另,在oncreateview里防止反復(fù)創(chuàng)建view导狡,但是不為空直接返回,網(wǎng)絡(luò)加載的數(shù)據(jù)下來(lái)操作界面會(huì)報(bào)空指針尝蠕,可能是ondestroyview里面做了操作烘豌,找到的view的id給清空了(用黃油刀的情況下),所以就不用做view是否為空的判斷了看彼。
2廊佩,在ondestroyview里可以控制是否加載完數(shù)據(jù)的標(biāo)志,第二次進(jìn)來(lái)會(huì)繼續(xù)走oncreateview靖榕,onactivitycreated标锄,的順序,不控制isLoadDataCompleted的話(huà)茁计,因?yàn)轭?lèi)沒(méi)有銷(xiāo)毀料皇,只是在走周期函數(shù),所以isLoadDataCompleted還是為true星压,最終結(jié)果就是顯示有view的界面践剂。數(shù)據(jù)并沒(méi)有去加載。
總結(jié):1娜膘,實(shí)現(xiàn)懶加載逊脯,就不用去限制viewpager的加載緩存了。沒(méi)有意義竣贪。處理起來(lái)還煩军洼。
2巩螃,實(shí)現(xiàn)懶加載又實(shí)現(xiàn)限制,就必須注意oncreateview匕争,和ondestroyview的操作避乏,這樣會(huì)造成不是相鄰的項(xiàng)目切換的話(huà)會(huì)有白板,因?yàn)橄喈?dāng)于重新創(chuàng)建view甘桑,然后加載數(shù)據(jù)顯示拍皮。