一.什么是Fragment的懶加載
當(dāng)ViewPager + adapter作為應(yīng)用搭布局的時(shí)候娄昆,VIewPager會(huì)通過通過setOffscreenPageLimit來設(shè)置預(yù)加載的項(xiàng)目萌焰,不設(shè)置setOffscreenPageLimit扒俯,則默認(rèn)為1(設(shè)置0無(wú)效陵珍,可以查看該方法源碼知道)互纯,也就是當(dāng)我們打開應(yīng)用看到的時(shí)候fragmentOne時(shí)留潦,實(shí)際上其他fragment(例如fragmentSecond)也進(jìn)行了加載殖卑,只不過沒有顯示出來罷了孵稽,但是這樣就造成了不必要的資源浪費(fèi)(例如菩鲜,fragmentSecond沒有顯示接校,但是卻進(jìn)行了大量的網(wǎng)絡(luò)加載操作)蛛勉。
基于上述情況诽凌,誕生了Fragment的懶加載模式:
總結(jié):只有頁(yè)面即將顯示的時(shí)候且只加載一次皿淋,滑動(dòng)到其他頁(yè)面的時(shí)候才加載其他頁(yè)面數(shù)據(jù)
當(dāng)再滑動(dòng)到已加載的頁(yè)面不再進(jìn)行數(shù)據(jù)的加載窝趣。(若想重新加載刷新重新加載數(shù)據(jù))
二.setUserVisibleHint的概念
該方法用戶告訴系統(tǒng)哑舒,這個(gè)Fragment的UI是否是可見的洗鸵。所以我們只需要集成Fragment重寫該方法膘滨,即可實(shí)現(xiàn)在Fragment可見的時(shí)候才進(jìn)行網(wǎng)絡(luò)加載操作火邓,即Fragment的懶加載铲咨。
三.封裝
BaseFragment:重寫setUserVisibleHint() -- 在顯示的時(shí)候調(diào)用方法 -- LoadData(用來網(wǎng)絡(luò)加載數(shù)據(jù)) -- 通過變量來控制什么時(shí)機(jī)來進(jìn)行網(wǎng)絡(luò)加載纤勒。
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
//聯(lián)網(wǎng)請(qǐng)求數(shù)據(jù)
loadData();
}
}
這時(shí)候只要在loadData()中去做聯(lián)網(wǎng)請(qǐng)求粹湃,那么就會(huì)極大的減少請(qǐng)求次數(shù)與請(qǐng)求時(shí)間再芋,大大的提升了用戶體驗(yàn)