ViewPager+Fragment的懒加载模式

ViewPager天生会加载左右两侧的页面,这是通过一个叫做DEFAULT_OFFSCREEN_PAGES的属性指定的,通过setOffscreenPageLimit(int)可以指定这个属性的值。

当我们把ViewPager改成自己的LazyViewPager之后,就不能与TabLayout绑定了,因为TabLayout只能与ViewPager对象绑定,这样就很尴尬能解决预加载问题,却不能解决绑定问题,说明这样也行不通了,那就只能把解决办法放到Fragment上了。Fragment的生命周期中,我们一般在onCreateView方法初始化视图,onActivityCreated方法初始化数据,正常创建Fragment对象后就会去加载视图和数据,需要我们这里需要控制加载数据的时机。

实现方式主要有两种,一是在页面选中后才去加载数据,

二是当Fragment可见了才去加载数

通过setUserVisibleHint和getUserVisibleHint方法来设置和获取Fragment的显示状态,当显示了才去加载数据。

if (getUserVisibleHint()) {

isVisible = true;

lazyLoad();

} else {

isVisible = false;

onInvisible();

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容