RecyclerView 巢狀卡頓優化
阿新 • • 發佈:2020-12-15
一.解決巢狀卡頓
- 呼叫預載入方法 setInitialPrefetchItemCount(int) 來優化巢狀時預載入效能,例如橫向RecycleView上有3-5個item需要顯示,可以呼叫LinearLayoutManager.setInitialPrefetchItemCount(4),預設的數值是2。
- 設定recycleview的子項快取 rv.setItemViewCacheSize(200);
- 繼續結合:
rv.setHasFixedSize(true);
rv.setNestedScrollingEnabled(false);
以上方案可解決巢狀卡頓(我試過後兩種方案是可以明顯降低卡頓)。
二.解決RecyclerView資料重新整理閃爍
- 問題原因分析:
- RecyclerView有一個RecyclerViewPool用來快取已建立的item,不手動建立RecyclerViewPool時,系統會自動建立一個大小為5的RecyclerViewPool。這就意味著RecyclerView的item個數大於5,每次重新整理都會自動呼叫onCreateViewHolder()。
新建立的item不配置相關內容的話,將顯示佈局檔案中的預設值,從而導致有資料和無資料的閃爍。
- 問題解決方案:
手動建立給RecyclerViewPool物件,指定它的大小,再傳給RecyclerView物件。
RecyclerView. RecycledViewPool pool= new RecyclerView.RecycledViewPool();
pool.setMaxRecycledViews(0, 10);
recyclerView.setRecycledViewPool(pool);
ps:
原因其實有多種,所以解決方案不一定對症。你可以嘗試此方案,判斷閃爍是否由這個原因引起。
轉載連結:RecyclerView 巢狀卡頓優化