Fragment 中 懒加载
2019-09-26 本文已影响0人
小慧sir
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;
}
}