viewpager特性:我們在開發(fā)過程中經(jīng)常會用到viewpager+fragment組合來實現(xiàn)頁面的切換,谷歌為了增強用戶體驗族壳,ViewPager加載頁面時默認會預加載當前界面的上一頁面和下一頁面,并銷毀其他頁面严拒,這樣會導致一個問題切換頁面時會加載大量的數(shù)據(jù)玩焰,這樣會需要消耗用戶大量的數(shù)據(jù)流量,并且每次切換的時候由于加載的數(shù)據(jù)量比較大,會導致頁面每次切換有在加載狀態(tài)逝嚎,并且會有一種卡頓的用戶體驗扁瓢。
需求:當ViewPager中滑動至某個頁面時,才加載當前頁面的數(shù)據(jù)补君,為此引入了一個概念懶加載
什么是懶加載呢引几?
就是設(shè)置viewpager 的預加載頁面數(shù)為0,viewpager里面有一個屬setOffscreenPageLimit,設(shè)置預加載頁面數(shù)挽铁,但是通過源碼會發(fā)現(xiàn):當設(shè)置0時伟桅,不起作用的。
為什么viewpager.setOffscreenPageLimit
private static final intDEFAULT_OFFSCREEN_PAGES=1;
private intmOffscreenPageLimit=DEFAULT_OFFSCREEN_PAGES;
如下是viewpager 的源碼:當limit為0時叽掘,是不起作用的楣铁,因此我們需要自定義一個viewpager
LazyViewPager 設(shè)置private static final intDEFAULT_OFFSCREEN_PAGES=0;即可
之后寫代碼都使用這個ViewPager就可以實現(xiàn)懶加載了。
這里有一點要注意一下更扁,不要使用API版本過高的ViewPager源碼盖腕,在高版本源碼中(ViewPager接近3000行),谷歌改了其中一些邏輯浓镜,
即使修改這個參數(shù)溃列,也無濟于事。
最好找14左右的ViewPager源碼膛薛。