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(); }
推荐阅读