- 減少onBindViewHolder內(nèi)的邏輯處理田炭,分離數(shù)據(jù)處理和視圖加載過程师抄;
- 盡可能使用局部刷新,減少使用全部刷新教硫;
- 如果ItemView的高度是固定叨吮,設(shè)置RecyclerView.setHasFixedSize(true)來避免 requestLayout浪費(fèi)資源;
- 通過重寫 RecyclerView.onViewRecycled(holder) 來回收資源瞬矩;
- 盡量使ItemView使用公用監(jiān)聽器茶鉴,通過id區(qū)分,減少監(jiān)聽器對象創(chuàng)建景用;
- 如果不需要動畫涵叮,設(shè)置((SimpleItemAnimator)RecyclerView.getItemAnimator()).setSupportsChangeAnimations(false);關(guān)閉動畫;
- 如果有多個RecycledView的Adapter是一樣的伞插,可以通過設(shè)置 RecyclerView.setRecycledViewPool(pool)割粮,來共用一個RecycledViewPool;
- 升級RecycleView版本到25.1.0及以上使用Prefetch功能蜂怎;
- 設(shè)置滾動監(jiān)聽RecyclerView.addOnScrollListener() 穆刻,在滑動過程中暫停修改視圖置尔;
- 增加緩存數(shù)量 RecyclerView.setViewCacheSize(int viewCount);
- 優(yōu)化ItemView布局杠步,減少層級、固定高度榜轿;
- 通過設(shè)置adapter.setHasStableIds(true)幽歼,并重寫getItemId()設(shè)置ItemView的唯一id,優(yōu)化復(fù)用規(guī)則谬盐,減少刷新閃爍甸私;
2022-02-26