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();

}

你可能感兴趣的:(ViewPager+Fragment的懒加载模式)