viewpager懒加载

作者: 蜂鸟之歌 | 来源:发表于2017-02-17 14:09 被阅读102次

    转载

    虽然ViewPager中提供的有setOffscreenPageLimit()来控制其预加载的数目,但是当设置为0后我们发现其根本没效果,这个的最小值就是1,也就是你只能最少前后各预加载一页。

    方法一
    在Fragment可见时请求数据。此方案仍预加载了前后的页面,但是没有请求数据,只有进入到当前Framgent时才请求数据。
    优点:实现了数据的懒加载
    缺点:一次仍是三个Framgment对象,不是完全意义的懒加载

    方法二
    直接修改ViewPager源码。通过查看ViewPager源码可知,控制其预加载的是一个常量
    DEFAULT_OFFSCREEN_PAGES,其默认值为1,表示当前页面前后各预加载一个页面,在这里我们直接将其设置为0即可,即去掉预加载。但是,这样有一个问题,那就是在使用其他控件时需要传入ViewPager时,这个就不能用了。
    优点:完全屏蔽掉了预加载
    缺点:应用太受限制,比如使用ViewPagerIndicator时需要传入ViewPager对象,这时傻眼了。

    方法三
    直接继承ViewPager,结合PagerAdapter实现懒加载。该方案是我用到的最完善的方法,完全的懒加载,每次只会建立一个Fragment对象。
    优点:完全屏蔽预加载
    缺点:稍微复杂,但是人家已经造好的轮子,直接用吧,很简洁
    开源库:https://github.com/lianghanzhen/LazyViewPager

    相关文章

      网友评论

      本文标题:viewpager懒加载

      本文链接:https://www.haomeiwen.com/subject/jyjcvttx.html