Android Viewpager+Fragment取消預加載及Fragment方法的學習

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包中的預加載數量好的多啊。

相關文章
相關標籤/搜索