Fragment懒加载

Fragment笔记

setUserVisibleHint()

设置系统提示是否该片段的用户界面当前是可见的。此提示默认为true,并持久跨片段实例状态保存和还原。
一个应用程序可以设置为false,表明该片段的UI被滚出能见度或没有用户直接可见的。这可用于系统优先次序的操作,如片段生命周期更新或装载机排序行为。
参数
isvisibletouser如果这个片段的用户界面是用户可见的目前(默认),假如不。
该方法用于告诉系统,这个Fragment的UI是否是可见的。所以我们只需要继承Fragment并重写该方法,即可实现在fragment可见时才进行数据加载操作。

onActivityCreated(Bundle)

当Activity的onCreate方法返回时调用

要实现懒加载我们需要写一个抽象类继承Fragment并重写这两个方法

public abstract class LazyLoadFragment extends Fragment {
    private boolean isViewInitiated = false; //控件是否初始化完成
    private boolean isVisibleToUser = false; //页面是否可见
    private boolean isFirstInitiated = true; //是否第一次加载

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        this.isVisibleToUser = isVisibleToUser;
        prepareFetchData(false);
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        isViewInitiated = true;
        prepareFetchData(false);
    }

    protected abstract void onLazyLoad();

    protected void fetchData(boolean forceUpdate) {
        if (isVisibleToUser && isViewInitiated && (isFirstInitiated || forceUpdate)){
            onLazyLoad();
            isFirstInitiated = false;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值