为什么要进行懒加载
一个优秀的APP在流畅性一定要做到不卡顿、没有跳帧、就算等待请求网络也要有动画让用户不会觉得死机。那么这一期我会在Fragment里进行懒加载,只有当页面显示的时候才被加载,不显示时让资源及时得到释放。
如果每个 Fragment 都有默认的网络请求操作(也可能是其它耗时操作,这里以网络请求为例),那么多个在 Fragment创建过程中都会执行默认网络请求,无论 Fragment 是否对用户可见,显然有些浪费流量、影响性 App 性能、用户体验不佳等缺点,这些自然不是我们想看到的,出于这些原因,让 Fragment 进行数据懒加载就有必要了。
那么懒加载的好处是什么呢
懒加载好处
- 减少了加载时县城数量,使可视区域内的图片也能够快速加载,优化了用户体验;
- 减少了同一时间发向服务器的请求数,服务器压力剧减;
Fragment懒加载实现的原理
学一样东西我们必须要向它的原理下手,OK!那么现在我们往上翻一翻!经过查看 ViewPager 的源码,我发现一个核心的方法 populate()
里面有这一段代码是用来设置缓存范围,比如总共有5个页面,设置了缓存大小是1(就是这个mOffscreenPageLimit参数),当前所有的位置是最0的话,那么缓存的就系1;当用户滑到1的时候缓存的则是0、1、2,滑到最右的时候缓存的就 3、4;
我用下面三幅图来描述一下
我们继续往下看,发现有两行代码,分别是PagerAdapter的 destroyItem()和 setPrimaryItem()方法,destroyItem方法主要是用来删除超出缓存位置的Fragment,由FragmentPagerAdapter具体实现。