RecyclerView ViewHoler 缓存机制

四级缓存

第一级

1
2
final ArrayList<ViewHolder> mAttachedScrap = new ArrayList<>();
ArrayList<ViewHolder> mChangedScrap = null;

mAttachedScrap: 页面上正在显示的ViewHolder
mChangedScrap:动画过程中的ViewHolder

可直接使用,不需 onCreateViewHoler()onBindViewHoler()

第二级

1
final ArrayList<ViewHolder> mCachedViews = new ArrayList<ViewHolder>();

默认存储2个刚移出屏幕的ViewHolder, 可直接使用,不需 onCreateViewHoler()onBindViewHoler()

第三级

1
private ViewCacheExtension mViewCacheExtension;

用户自定义缓存,不推荐

第四级

1
RecycledViewPool mRecyclerPool;

默认存储5个移出屏幕的ViewHolder,复用无需重新调用 onCreateViewHoler(), 要重新执行 onBindViewHoler()





文章目录
  1. 1. 四级缓存
    1. 1.1. 第一级
    2. 1.2. 第二级
    3. 1.3. 第三级
    4. 1.4. 第四级