Android从源码分析RecyclerView四级缓存复用机制一(缓存ViewHolder)

public final class Recycler {
//一级缓存中用来存储屏幕中显示的ViewHolder
final ArrayList mAttachedScrap = new ArrayList<>();
ArrayList mChangedScrap = null;
//二级缓存中用来存储屏幕外的ViewHolder
final ArrayList mCachedViews = new ArrayList();
//暂可忽略 mAttachedScrap的不可变视图
private final List
mUnmodifiableAttachedScrap = Collections.unmodifiableList(mAttachedScrap);

private int mRequestedCacheMax = DEFAULT_CACHE_SIZE;
//mCachedViews屏幕外缓存的存储上限默认为DEFAULT_CACHE_SIZE也就是2,可变
int mViewCacheMax = DEFAULT_CACHE_SIZE;
//四级缓存当屏幕外缓存的大小大于2,便放入mRecyclerPool中缓存
RecycledViewPool mRecyclerPool;
//三级缓存自定义缓存,自己定义的缓存规则
private ViewCacheExtension mViewCacheExtension;
//默认屏幕外缓存大小
static final int DEFAULT_CACHE_SIZE = 2;
//…

2.再看一下主要的方法调用流程,从RecyclerView的onMeasure方法开始一直到三个存储的地方一级,二级和四级缓存,别问为啥没有mViewCacheExtension,问就是这个你需要自己去存

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值