ViewPager和Fragment的综合使用的预加载机制

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的综合使用的预加载机制的主要内容,如果未能解决你的问题,请参考以下文章

Android中Fragment和ViewPager那点事儿

ViewPager详解填充Fragment和懒加载

ViewPager详解填充Fragment和懒加载

Android ViewPager + Fragment 懒加载数据 可操作控件版

在一个ViewPager中同时使用v4 Fragment和native Fragment

android怎么实现页面的左右滑动