用户登录
用户注册

分享至

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();

}
软件
前端设计
程序设计
Java相关