WHAT

RecyclerView 通过四级缓存池(Scrap → Cache → ViewCacheExtension → RecycledViewPool)复用 View,避免重复 inflate 和 findViewById,大幅降低列表滑动时的内存抖动与 GC 卡顿。

WHY

ListView 只有单级 convertView 复用,ViewType 多时容易出现 View 错位和 GC 频繁卡顿。RecyclerView 分离了布局与回收逻辑,不同 ViewType 各自拥有独立缓存,命中率更高,性能更稳定。

HOW

缓存层级 名称 默认容量 特点
一级 mAttachedScrap 无限制 屏幕内临时 detach,复用不触发 onBindViewHolder
二级 mCachedViews 2 刚离屏的 View,携带数据,命中无需重新绑定
三级 ViewCacheExtension 自定义 开发者自行实现的扩展缓存
四级 RecycledViewPool 每类型5 多 RecyclerView 共享,需手动 setRecycledViewPool()

实用调优技巧: