Fragment懒加载

Fragment的resume和onPause是依赖于Activity的;不是真正的状态

应用场景:viewPager+Fragment+ListView中

viewPager缓存左右两个页面,会刷新listview数据,


直接改变当前的listview,出现错误,加载异常等问题;


实现:

public abstract class LazyFragment extends BaseFragment{

protected boolean isVisible;

// 标志位,标志已经初始化完成。

private boolean isPrepared=false;

@Override

protected void initViewsAndEvents() {

isPrepared=true;

//第一个显示的页面,会先触发懒加载,此处必须重新加载

onVisible();

}

/**

* 在这里实现Fragment数据的缓加载.

*/

@Override

public void setUserVisibleHint(boolean isVisibleToUser) {

super.setUserVisibleHint(isVisibleToUser);

if(getUserVisibleHint()) {

isVisible=true;

onVisible();

}else{

isVisible=false;

onInvisible();

}

}

protected void onVisible() {

if(isPrepared) {

LogUtil.d(this.getClass().getName() +"---lazyLoad----");

lazyLoad();

}

}

protected abstract void lazyLoad();

protected void onInvisible() {

}

}

你可能感兴趣的:(Fragment懒加载)