1. 程式人生 > 其它 >RecyclerView 巢狀卡頓優化

RecyclerView 巢狀卡頓優化

技術標籤:備忘錄javaandroid

一.解決巢狀卡頓

  1. 呼叫預載入方法 setInitialPrefetchItemCount(int) 來優化巢狀時預載入效能,例如橫向RecycleView上有3-5個item需要顯示,可以呼叫LinearLayoutManager.setInitialPrefetchItemCount(4),預設的數值是2。
  2. 設定recycleview的子項快取 rv.setItemViewCacheSize(200);
  3. 繼續結合:
    rv.setHasFixedSize(true);
    rv.setNestedScrollingEnabled(false);

以上方案可解決巢狀卡頓(我試過後兩種方案是可以明顯降低卡頓)。

二.解決RecyclerView資料重新整理閃爍

  1. 問題原因分析:
  • RecyclerView有一個RecyclerViewPool用來快取已建立的item,不手動建立RecyclerViewPool時,系統會自動建立一個大小為5的RecyclerViewPool。這就意味著RecyclerView的item個數大於5,每次重新整理都會自動呼叫onCreateViewHolder()。
    新建立的item不配置相關內容的話,將顯示佈局檔案中的預設值,從而導致有資料和無資料的閃爍。
  1. 問題解決方案:
    手動建立給RecyclerViewPool物件,指定它的大小,再傳給RecyclerView物件。
RecyclerView.
RecycledViewPool pool= new RecyclerView.RecycledViewPool(); pool.setMaxRecycledViews(0, 10); recyclerView.setRecycledViewPool(pool);

ps:
原因其實有多種,所以解決方案不一定對症。你可以嘗試此方案,判斷閃爍是否由這個原因引起。

轉載連結:RecyclerView 巢狀卡頓優化