天天看點

android fragment跳轉卡頓,Android使用ViewPager快速切換Fragment時卡頓的優化方案

當ViewPager切換到目前的Fragment時,Fragment會加載布局并顯示内容,如果使用者這時快速切換ViewPager,即Fragment需要加載UI内容,而又頻繁地切換Fragment,就容易産生卡頓現象(類似在ListView快速滑動的同時加載圖檔容易卡頓)。

優化方案:

1.Fragment輕量化

如果ViewPager加載的Fragment都比較輕量,适當精簡Fragment的布局,可提高Fragment加載的速度,進而減緩卡頓現象。

2.防止Fragment被銷毀

ViewPager在切換的時候,如果頻繁銷毀和加載Fragment,就容易産生卡頓現象,阻止Fragment的銷毀可有效減緩卡頓現象。

(1)在PagerAdapter裡覆寫destroyItem方法可阻止銷毀Fragment

@Override

public void destroyItem(ViewGroup container, int position, Object object) {

//super.destroyItem(container, position, object);

}

(2)通過PagerAdapter的setOffscreenPageLimit()方法可以設定保留幾個Fragment,适當增大參數可防止Fragment頻繁地被銷毀和建立。

風險:在Fragment比較多的情況下,部分低端機型容易産生OOM問題。

3.Fragment内容延遲加載

(1) 描述

在切換到目前Fragment的時候,并不立刻去加載Fragment的内容,而是先加載一個簡單的空布局,然後啟動一個延時任務,延時時長為T,當使用者在該Fragment停留時間超過T時,繼續執行加載任務;而當使用者切換到其他Fragment,停留時間低于T,則取消該延時任務。