AndroidX更新后ViewPager懒加载的前世今生

前言:最近开始新项目,计划转战到AndroidX。虽然Android Support Library仍然支持,但是Android团队官方的态度也很明确,未来都会为AndroidX为主,Android Support Library已经不再建议使用,并会慢慢停止维护

viewPager为何会出现懒加载
  • viewPager配合fragment,默认会加载左右两个fragment,我们称之为viewpager的预加载;有童鞋有话说,不是可以设置setOffscreenPageLimit(0)【手动滑稽】,请看下面代码片段:
public void setOffscreenPageLimit(int limit) {
   
    if (limit < DEFAULT_OFFSCREEN_PAGES) {
   
        // DEFAULT_OFFSCREEN_PAGES = 1,小于1时也等于1,所以setOffscreenPageLimit(0)无济于事
        limit = DEFAULT_OFFSCREEN_PAGES;
    }
    //省略源码
}
  • 这种奇葩组合导致fragment的生命周期并非严格意义一样,当预加载的fragment不可见时生命周期已经执行到了onResume();
  • 那么这就导致了一个问题,如果用户没有滑到预加载的页面,直接关闭了,那不是白白浪费了用户的流量和咋们服务器的性能开销;因此,懒加载方案应运而生了。
懒加载前世到底何许人也
  • fragemnt提供了一个setUserVisibleHint(boolean isVisibleToUser)方法,可以获取是否可见的状态;
  • 增加一个是否可见的标志(visibleToUser),我不能让它每次可见都加载数据吧,增加一个标记位首次加载(firstload),为了确保不出问题,增加一个view创建好的标记(viewCreated);
  • 下面是具体代码展示:
public abstract class BaseFragment extends Fragment {
   

    /**
     * 当前Fragment状态是否可见
     */
    private boolean visibleToUser = false;
  
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值