public abstract class BaseFragment extends Fragment {
protected boolean isCreatView = false;//是否加载过视图
protected boolean isLoadData = false; //是否加载过数据
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View rootView = inflater.inflate(provideContentViewId(), container, false);
ButterKnife.bind(this, rootView);
initView(rootView);
isCreatView = true;//加载过视图设置为true
isloadData();
return rootView;
}
/**
* 视图是否已经对用户可见,系统的方法
*/
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
isloadData();
}
private void isloadData() {
if (!isCreatView) {//判断是否加载过视图
return;
}
if (getUserVisibleHint()) { //判断是否可见
if (!isLoadData){ //判断是否加载过数据
initData();
initListener();
isLoadData = true;//加载过数据设置为true
}
} else {
if (isLoadData) {
stopLoad();
}
}
}
//得到当前界面的布局文件id(由子类实现)
protected abstract int provideContentViewId();
/**
* 加载view
*/
public void initView(View rootView) {
}
/**
* 加载数据
*/ public void initData() {
}
/**
* 事件监听
*/
public void initListener() {
}
/**
* 停止加载
*/
protected void stopLoad() {
}
/**
* 销毁视图
*/
@Override
public void onDestroyView() {
super.onDestroyView();
isCreatView = false;
isLoadData = false;
}
}
Fragment 中 懒加载
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 关于fragment的懒加载探析 这里涉及到的API有两个: 1. public void setUserVisi...
- 前沿:在使用ViewPager和fragment的时候,如果不了解其运行机制,就会造成网络请求滥用和界面的过度绘制...
- Fragment 懒加载初探 1.目标需求 在开发中,经常会碰到 ViewPager 加载多个 Fragment ...
- 简介 所谓的Fragment懒加载就是当Fragment可见的时候我们再去请求数据显示数据。 Fragment的懒...