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的优化
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容