1.在使用ViewPager嵌套Fragment的時候,因爲VIewPager的幾個Adapter的設置來講,都會有必定的預加載。經過設置setOffscreenPageLimit(int number) 來設置預加載的熟練,在V4包中,默認的預加載是1,即便你設置爲0,也是不起做用的,設置的只能是大於1纔會有效果的。咱們須要經過更改V4包中的默認屬性才能夠。java
更改過的V4 包下載地址,應該也能夠,我沒試過。ide
2.限制預加載,會出現滑動過程當中卡頓現象。其實Fragment中防止預加載主要是防止數據的預加載,Fragment中的VIew預加載是有好處的,咱們能夠經過Fragment中的一個方法來達到預加載View 可是不加載數據,在Fragment顯示的時候纔去加載數據。spa
直接上我項目中使用到的代碼:code
private boolean isVisable = false; @Override public void setUserVisibleHint(boolean isVisibleToUser) { //判斷Fragment中的ListView時候存在,判斷該Fragment時候已經正在前臺顯示 經過這兩個判斷,就能夠知道何時去加載數據了 if (getUserVisibleHint() && isVisible()) { isVisable = true; }else{ isVIsable = false; } super.setUserVisibleHint(isVisibleToUser); }
這個方法會在切換到Fragment顯示的時候去調用。get
爲了保證一開始加載Fragment的時候該方法提早調用,致使的數據不會加載,我在代碼中作出了以下的判斷:it
@Override public void onActivityCreated(Bundle savedInstanceState) { if (isVisable) { loadData(); } super.onActivityCreated(savedInstanceState); }
特別注意:class
1.在剛開始加載Fragment的時候,setUserVisibleHint這個方法比onCreated方法執行的還要早。預加載的Fragment就不會執行這個方法。List
2.在VIewPager 切換到某個Fragment的時候,還會調用該方法。下載
經過在這個方法中去加載數據,我發現能夠必定程度的實現預加載問題,保證了預加載不會加載數據,只會加載Fragment中的VIew,這樣就能夠保證了VIewPager滑動的流暢性,也保證了只有切換到一個Fragment的時候纔去加載數據的目的。方法
我以爲這種方法比修改V4包中的預加載數量好的多啊。