Fragment懒加载的实现
- 作者: 举枪打鸟鸟
- 来源: 51数据库
- 2021-07-30
一、要实现Fragment的懒加载需要满足三个条件:
1、布局是否初始化
2、视图是否可见
3、是否加载过数据
综上所述,只要满足这三个条件就可以执行加载操作。
二、如何实现
1、定义一个 isPrepared变量,在初始化视图的时候赋值为true;
2、定义一个isVisibleToUser变量,在页面可见状态赋值为true;
3、定义一个isDataInitiated变量,在页面加载数据时赋值为true;
三、直接上代码
public abstract class BaseFragment extends Fragment {
/**
* 是否初始化过布局
*/
protected boolean isPrepared;
/**
* 当前界面是否可见
*/
protected boolean isVisibleToUser;
/**
* 是否加载过数据
*/
protected boolean isDataInitiated ;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(getContentId(), container, false);
isPrepared = true;
initView(view);
initToolbar();
return view;
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
this.isVisibleToUser = isVisibleToUser;
if (isVisibleToUser) {
if (isVisibleToUser && isPrepared && (!isDataInitiated)) {
loadData();
isDataInitiated = true;
}
}
}
/**
* 懒加载
*/
protected abstract void loadData();
@Override
public void onDestroyView() {
super.onDestroyView();
isPrepared = false;
}
protected abstract int getContentId();
protected abstract void initView(View view);
protected abstract void initToolbar();
}
推荐阅读
