public abstract class BaseFragment extends Fragment{
//Fragment的View加载完毕的标记
private boolean isViewCreated;
//Fragment对用户可见的标记
private boolean isUIVisible;
private boolean isLazyLoad ;
//该方法会多次回调,而且可能会在onCreateView()方法执行完毕之前回调
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
//isVisibleToUser这个boolean值表示:该Fragment的UI 用户是否可见
if (isVisibleToUser) {
isUIVisible = true;
loadData();
} else {
isUIVisible = false;
}
}
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
//执行初始化操作,比如findViewById,加载view
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
//view创建完成
isViewCreated = true;
loadData();
initViews();
}
//进行双重标记判断,确保onCreateView加载完毕且页面可见,才加载数据
private void loadData() {
if ( isUIVisible&&isViewCreated) {
lazyLoad();
//数据加载完毕,恢复标记,防止重复加载
isViewCreated = false;
isUIVisible = false;
isLazyLoad = true;
}
}
//真正懒加载函数
protected abstract void lazyLoad();
}
fragment懒加载(笔记)
最新推荐文章于 2024-05-02 12:34:42 发布