1. 背景
之前对RecyclerView的回收机制掌握状态,一直是朦朦胧胧的,知道有四级缓存,也知道四级缓存分别是干嘛的,也知道先从哪取再从哪取,但是,再细一点,就不知道原因了,说白了还是没有学明白,于是又花了时间细心钻研了下
2. 新的收获
之前有几个误区,包括这次也有新的理解,直到这次看完才明白,记录一下
- 四级缓存并不是都用得上,比如滑动的时候就用不到
scrap缓存,实际滑动的时候,一般只用到了两级缓存 mChangedScrap和mAttachedScrap共同点与不同点
共同点是:不参与滑动时的回收复用,只保存重新布局时从RecyclerView分离的ViewHolder,筛选条件都有position或者id
不同点是:mChangedScrap保存的是:无效、未移除、数据发生变化的ViewHolder,而mAttachedScrap保存的是:无效、未移除、数据没有发生变化的ViewHoldermCachedViews默认容量是2,筛选条件为position或者id- 缓存池默认大小是“两个5”,即五种
itemType,每种itemType默认有五个。使用了SparseArray这个数据类型,如下
public static class RecycledViewPool {
private static final int

本文探讨了RecyclerView的回收复用机制,详细解析了四级缓存的工作原理,包括回收过程中的两个主要入口,以及复用过程中的fill()方法。在滑动和数据更新场景下,该机制如何优化性能,避免不必要的创建和绑定数据。同时,针对遇到的布局复用问题,提出了解决方案。
最低0.47元/天 解锁文章
233

被折叠的 条评论
为什么被折叠?



