目前主流的安卓應(yīng)用大都會采用ViewPager加Fragment的機制實現(xiàn)多個tab頁面的切換甚颂,但是在開發(fā)工程中相信都會遇到這樣的情況,如果在Fragment里訪問網(wǎng)絡(luò)或者執(zhí)行復(fù)雜操作較多時笋籽,會使得切換過程變得卡頓,用戶體驗極為不好椭员,為解決這個問題车海,小編找了一些方法:
-
Fragment輕量化
如果ViewPager加載的Fragment都比較輕量,適當(dāng)精簡Fragment的布局,可提高Fragment加載的速度侍芝,從而減緩卡頓現(xiàn)象研铆。
-
防止Fragment被銷毀
ViewPager在切換的時候,如果頻繁銷毀和加載Fragment州叠,就容易產(chǎn)生卡頓現(xiàn)象棵红,阻止Fragment的銷毀可有效減緩卡頓現(xiàn)象。
(1) 在PagerAdapter里覆蓋destroyItem方法可阻止銷毀Fragment
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//super.destroyItem(container, position, object);
}
(2) 通過PagerAdapter的setOffscreenPageLimit()方法可以設(shè)置保留幾個Fragment咧栗,適當(dāng)增大參數(shù)可防止Fragment頻繁地被銷毀和創(chuàng)建逆甜。(風(fēng)險:在Fragment比較多的情況下,部分低端機型容易產(chǎn)生OOM問題致板。)
- Fragment內(nèi)容延遲加載
在切換到當(dāng)前Fragment的時候交煞,并不立刻去加載Fragment的內(nèi)容,而是先加載一個簡單的空布局斟或,然后啟動一個延時任務(wù)素征,延時時長為T,當(dāng)用戶在該Fragment停留時間超過T時萝挤,繼續(xù)執(zhí)行加載任務(wù)稚茅;而當(dāng)用戶切換到其他Fragment,停留時間低于T平斩,則取消該延時任務(wù)。
@Override
public void onResume() {
// TODO Auto-generated method stub
super.onResume();
//getData();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
getData();
}
}, 200);
}
比較方便使用的幾個方法大概就是這樣咽块,希望對大家有所幫助绘面。