android ViewPager预加载问题


使用ViewPager时候,PagerAdapter一般都会提前加载 前一个View + 当前View + 下一个View,达到滑动平滑的效果,这么做当然是非常好的,

但是用户只停留在第一个View上的时候,下一个View预加载了,浪费了资源怎么办?

相信各位都曾经遇到过这样的问题,viewPager究竟如何才能完美禁止预加载问题呢?


先来看下微信的开发人员是怎么做的:

android ViewPager预加载问题android ViewPager预加载问题


微信在这里实现原理是:先添加一个View到viewPager当中,当停止滑动时才加载数据。

我觉得这种办法相当好,既不影响界面美观,又不会浪费资源,简直是完美的方案!


那么问题来了,怎么做到呢?

OnPageChangeListener 是viewPager的一个滑动监听


ViewPager.OnPageChangeListener onPageChangeListener = new ViewPager.OnPageChangeListener() {



        @Override
        public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
滑动时回调

        }


        @Override
        public void onPageSelected(int position) {

选择时回调
        }


        @Override
        public void onPageScrollStateChanged(int state) {
也是滑动时回调,监听状态 

state = 0时:静止状态

state = 1:滑动状态

state = 2:滑动停止

        }

    };


我们只需要在onPageScrollStateChanged方法中加入一个回调,在实现的时候判断一下state就行了,当state==2的时候说明滑动停止,然后initList到view当中


看我的实现效果,我只是设置了几张图片进入,然后开辟子线程模拟加载数据,数据加载完毕后setView

android ViewPager预加载问题android ViewPager预加载问题