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包中的预加载数量好的多啊。

相关文章
相关标签/搜索