- 减少onBindViewHolder内的逻辑处理,分离数据处理和视图加载过程;
- 尽可能使用局部刷新,减少使用全部刷新;
- 如果ItemView的高度是固定,设置RecyclerView.setHasFixedSize(true)来避免 requestLayout浪费资源;
- 通过重写 RecyclerView.onViewRecycled(holder) 来回收资源;
- 尽量使ItemView使用公用监听器,通过id区分,减少监听器对象创建;
- 如果不需要动画,设置((SimpleItemAnimator)RecyclerView.getItemAnimator()).setSupportsChangeAnimations(false);关闭动画;
- 如果有多个RecycledView的Adapter是一样的,可以通过设置 RecyclerView.setRecycledViewPool(pool),来共用一个RecycledViewPool;
- 升级RecycleView版本到25.1.0及以上使用Prefetch功能;
- 设置滚动监听RecyclerView.addOnScrollListener() ,在滑动过程中暂停修改视图;
- 增加缓存数量 RecyclerView.setViewCacheSize(int viewCount);
- 优化ItemView布局,减少层级、固定高度;
- 通过设置adapter.setHasStableIds(true),并重写getItemId()设置ItemView的唯一id,优化复用规则,减少刷新闪烁;
2022-02-26