ViewPager+fragment延時載入,懶載入(資料快取)
阿新 • • 發佈:2019-02-12
今天開發遇到資料快取的問題, ViewPager+2個fragment,大家都知道ViewPager有預載入的功能,每次都會把下一個頁面同時載入,這樣雖然有時很好,但是使用者只需看一個Fragment時,我們就做了一些多餘工作載入了第二個Fragment。在這隻需要取消Fragment的預載入即可,只有當用戶切換到某個Fragment才載入..這樣使用者體驗會好一點,在網上查詢過,LazyViewPager可以實現,但是切換頁面的時候發現都會重新載入, 並沒有把之前載入過的快取起來,這樣效果不理想, 這個念頭打消後變想下一個辦法
首先,介紹兩個方法void
setUserVisibleHint(boolean isVisibleToUser) 、boolean getUserVisibleHint(),它們分別用作設定/獲得Fragment可見狀態,我們可以重寫Fragment在其中做判斷,程式碼如下:
@Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if(isVisibleToUser&&isInit)//isInit 預設是false 沒有初始化控制元件過,不然會空指標 { loadData(); }else { isInit=false;//不可見,設定為false 第二次可見的時候不執行載入資料的方法 } }
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initView(view);
isInit=true;//初始化後 將其設定成true 表示已經初始化控制元件過了
}
改fragment的 第一次進入走的幾個方法 當然他的其他生命週期的方 法我就不寫了。 setUserVisibleHint() -----》onCreateView()------》
轉載請註明出處