欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

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

相关标签: android