Fragment的懒加载与懒加载的使用

一.什么是Fragment的懒加载

当ViewPager + adapter作为应用搭布局的时候,VIewPager会通过通过setOffscreenPageLimit来设置预加载的项目,不设置setOffscreenPageLimit,则默认为1(设置0无效,可以查看该方法源码知道),也就是当我们打开应用看到的时候fragmentOne时,实际上其他fragment(例如fragmentSecond)也进行了加载,只不过没有显示出来罢了,但是这样就造成了不必要的资源浪费(例如,fragmentSecond没有显示,但是却进行了大量的网络加载操作)。


image.png

基于上述情况,诞生了Fragment的懒加载模式:

总结:只有页面即将显示的时候且只加载一次,滑动到其他页面的时候才加载其他页面数据
当再滑动到已加载的页面不再进行数据的加载。(若想重新加载刷新重新加载数据)

二.setUserVisibleHint的概念

该方法用户告诉系统,这个Fragment的UI是否是可见的。所以我们只需要集成Fragment重写该方法,即可实现在Fragment可见的时候才进行网络加载操作,即Fragment的懒加载。

三.封装

BaseFragment:重写setUserVisibleHint() -- 在显示的时候调用方法 -- LoadData(用来网络加载数据) -- 通过变量来控制什么时机来进行网络加载。

  @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
            //联网请求数据
            loadData();
        }
    }

这时候只要在loadData()中去做联网请求,那么就会极大的减少请求次数与请求时间,大大的提升了用户体验

你可能感兴趣的:(Fragment的懒加载与懒加载的使用)