1. 程式人生 > >安卓Viewpager載入大量圖片的時候卡頓

安卓Viewpager載入大量圖片的時候卡頓

在viewpager中使用fragment,但是fragment中有大量的圖片,所以每次滑動viewpager的時候由於viewpager的預載入機制,它每次都載入兩頁的資料,所有有時候會卡頓或奔潰,這時候就需要解決
一開始我想的是取消預載入,但是第一太麻煩,第二效果不好,還是會卡頓,所以上網找了一些方法,終於感覺有個不錯的,就是用setUserVisibleHint,這是fragment的一個方法,就是在fragment顯示的時候呼叫,我們可以把載入資料的請求放在這裡面,這樣viewpager預載入的時候只是記載的檢視,但是不載入資料,這樣就不卡頓啦,這個方法相當於Resume,程式碼如下:

public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        isCreate = true;
 }

public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser&&isCreate) {
//可見時載入資料相當於Fragment的onResume
}else{ //不可見是不載入資料 } }

當然,只這樣做的話第一頁有時候載入不出來,或者,viewpager滑動的時候好使,但是通過上面的button點選讓viewpager通過setCurrentItem中的1頁調到第5頁等,這樣不相鄰的頁的時候,由於載入的時候沒有預先載入檢視,所以setUserVisibleHint是在onCreate之前載入的,所以載入不出來資料,這時候我們只需在onCreateView或其他之後的方法中呼叫:

if (getUserVisibleHint()){
            //載入資料
        }

ok啦