RecyclerView缓存机制

RecyclerView使用

RecyclerView在设计的时候有5个缓存对象,共分了三级.每次创建ViewHolder的时候,会按照优先级一次查询环迅创建ViewHolder.每次将Viewholder缓存到Recycler缓存的时候,也会按照优先级一次缓存进去

  • 一级缓存:返回布局和内容都有效的ViewHolder

    • 按照position或者id进行匹配
    • 命中一级缓存无需onCreateViewHolder和onBindViewHolder
    • mAttachScrap在adapter.notifyXxx的时候用到
    • mChanedScarp在每次View绘制的时候用到,因为getViewHolderForPosition非调用多次
    • mCachedView:用来解决滑动抖动的情况,默认值为2
  • 二级缓存:返回View

    • 按照position和type进行匹配
    • 直接返回View
    • 需要自己继承ViewCacheExtension实现
    • 位置固定,内容不发生改变的情况,比如说Header如果内容固定,就可以使用
  • 三级缓存:返回布局有效,内容无效的ViewHolder

    • 按照type进行匹配,每个type缓存值默认=5
    • layout是有效的,但是内容是无效的
    • 多个RecycleView可共享,可用于多个RecyclerView的优化

你可能感兴趣的:(RecyclerView缓存机制)