@weidong
2017-07-20T07:35:15.000000Z
字数 1538
阅读 320
Android课程
http://blog.csdn.net/tellh/article/details/50705178
http://www.jianshu.com/p/c5d29a0c3f4c
推荐框架
https://github.com/lianghanzhen/LazyViewPager
懒加载,指的是必要的时候才加载,否则不进行View的绘制和数据的加载。原因是Viewpager一次只会显示一个页面,那么初始进来时,只需加载第一张Fragment页卡,其他的不加载,当用户向右滑动切换再进行加载。
因为其他Fragment对于用户来说是不可见的,如果一开始就把全部Fragment一起加载,可能造成启动时卡顿的问题,更重要的是可能白白耗费用户的流量,因为用户可能并不需要其他Fragment的信息。
public abstract class BasePageFragment extends Fragment {
//是否可见
protected boolean isVisible;
//View是否初始化
protected boolean isViewInit;
//数据是否初始化
protected boolean isDataInit;
/**
* 在Activity完成其onCreate()回调之后调用
* @param savedInstanceState
*/
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
isViewInit = true;
prepareFetchData();
}
/**
* 当fragment被用户可见时,setUserVisibleHint()会调用且传入true值,
* 当fragment不被用户可见时,setUserVisibleHint()则得到false值
* @param isVisibleToUser
*/
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
this.isVisible = isVisibleToUser;
prepareFetchData();
}
public boolean prepareFetchData() {
//当前界面(Fragment)可见,并且Fragment已经初始化完毕、网络数据未加载,则请求数据
if (isVisible && isViewInit && !isDataInit) {
fetchData();
isDataInit = true;
return true;
}
return false;
}
public abstract void fetchData();
}