Fragment懒加载的实现
程序员文章站
2022-08-17 13:42:53
一、要实现Fragment的懒加载需要满足三个条件:1、布局是否初始化2、视图是否可见3、是否加载过数据综上所述,只要满足这三个条件就可以执行加载操作。二、如何实现1、定义一个 isPrepared变量,在初始化视图的时候赋值为true;2、定义一个isVisibleToUser变量,在页面可见状态赋值为true;3、定义一个isDataInitiated变量,在页面加载数据时赋值为true;三、直接上代码public abstract class BaseFrag...
一、要实现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(); }
本文地址:https://blog.csdn.net/weixin_42345592/article/details/107360994