首页 > 代码库 > ViewPager和Fragment的综合使用的预加载机制
ViewPager和Fragment的综合使用的预加载机制
混合使用的适配器: FragmentPagerAdapter FragmentStatePagerAdapter(Fragment数据动态性较大、占用内存较多的时候)
ViewPager的预加载:ViewPager 会默认预先初始化当前页面的左右相邻页面,它的预先加载页面数量默认是 1 ,
并且是private的不可以修改,这样做的好处是左右滑动会比较流畅。
懒加载:即让ViewPager预加载初始化UI,而具体一些数据,网络访问请求等延迟加载。这是靠Fragment里有一个
setUserVisibleHint(boolean isVisibleToUser)的方法,我们可以在这个方法里做判断,当其True可见时
(即切换到某一个具体Fragment)时才去加载数据,这样可以省流量。
可以解决的问题:
5 个Fragment里有一个Fragment是有SurfaceView的,这样造成的问题就是,我ViewPager滑动到其相邻页面时,含有SurfaceView的页面就会被预先初始化,然后SurfaceView就开始预览了,只是我们看不到而已。同样的,当我们从含有SurfaceView的页面滑倒其相邻的页面时,SurfaceView并不会回调其surfaceDestory方法。于是这给我造成了极大的困扰。
setOffscreenPageLimit(int limit),来设置ViewPager预加载的数量
viewPager的成员变量DEFAULT_OFFSCREEN_PAGES 这里就定义了默认值是1, 所以网上 有种解决方案 说调用ViewPager的setOffscreenPageLimit(int limit),
ViewPager和Fragment的综合使用的预加载机制