RecyclerView 中缓存同意交给内部的一个叫Recycler的类来管理。

分四级

  1. Scrap
  2. Cache
  3. ViewCacheExtension
  4. RecyclerViewPool

它缓存的是ViewHolder,不同于 ListView中的RecyclerBin,

RecyclerBin中的scrapViews和activeViews缓存的是View.

Recycler中,mScrap和mCache的两级缓存分别存放的是  显示的ViewHolder,和移出屏幕的viewHolder,mScrap表示活动在屏幕上的item,mCache表示移出屏幕的itemview。

这两级缓存对应的是数据的position,根据position从缓存列表里把viewholder取出来。

而下面的RecyclerViewPool则根据的是viewType.

如果这两级缓存没有找到,还有ViewCacheExtension和RecyclerViewPool两个缓存去查找,如果还是没有,那就走oncreateViewHolder.

而ViewCacheExtension这一级的缓存是需要由开发者自己定义,可以自己实现是根据viewType还是position来存取itemview(不是viewHolder)

几个RecyclerView的优化

  • 5.0之后加入的RenderThread,解放了UI 线程专注于与用户交互逻辑,RenderThread机制在RecyclerView 中实现了Prefetch的功能,将DrawFrame交给RenderThread运行,UI Thread在此期间可以空闲,也可以预取下一个item,或者可以做动画过程。但setInitialPrefetchItemCount这个方法只有LinearLayoutManager可用。
  • RecyclerView.setHasFixedSize(true),这个api的使用是在,当数据集的改变不影响recyclerview的宽高时,不需要重新requestLayout(具体什么情况?比如不可见item?)

转载于:https://juejin.im/post/5c347d72e51d4551e533cdb2

RecyclerView 缓存机制相关推荐

  1. RecyclerView缓存机制(回收些啥?)

    这是RecyclerView缓存机制系列文章的第二篇,系列文章的目录如下: RecyclerView缓存机制(咋复用?) RecyclerView缓存机制(回收些啥?) RecyclerView缓存机 ...

  2. RecyclerView缓存机制(scrap view)

    这是RecyclerView缓存机制系列文章的第四篇,系列文章的目录如下: RecyclerView缓存机制(咋复用?) RecyclerView缓存机制(回收些啥?) RecyclerView缓存机 ...

  3. RecyclerView缓存机制

    1. ViewHolder 1.1 作用 ViewHolder是对RecyclerView上的ItemView的封装,它是RecyclerView缓存的载体.它封装了以下属性: View itemVi ...

  4. 【腾讯Bugly干货分享】Android ListView与RecyclerView对比浅析--缓存机制

    本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5811d... 作者:黄宁源 一,背景 RecyclerView是谷歌官方出的一 ...

  5. recyclerview item点击无效_让你彻底掌握RecyclerView的缓存机制

    点击上方蓝字关注 ?? 来源:肖邦kakahttps://www.jianshu.com/p/3e9aa4bdaefd 前言 RecyclerView这个控件几乎所有的Android开发者都使用过(甚 ...

  6. RecyclerView详解一,使用及缓存机制

    本文大致会先讲解RecyclerView的基础知识及使用,最后会深入讲解一点原理.当然,本人知识水平有限哈,太深入的东西我现在还没接触到,还请大家包容,阿里嘎多~ 一.RecyclerView的历史与 ...

  7. 一篇文章搞定《RecyclerView缓存复用机制》

    一篇文章搞定<RecyclerView缓存复用机制> 前言 零.为什么要缓存 一.RecyclerView如何构建我们的列表视图 二.缓存过程 三.缓存结构 1.mChangedScrap ...

  8. Android Glide图片加载框架(三)缓存机制

    文章目录 一.缓存简介 二.缓存用法 内存缓存方式 磁盘缓存方式 三.缓存KEY 四.内存缓存 内存缓存流程 五.磁盘缓存 磁盘缓存流程 Android Glide图片加载框架系列文章 Android ...

  9. delphi listview 添加数据 慢_ListView 的缓存机制

    一.前言 ListView 作为一个 Android 5.x 之前的一个用于显示数据列表的控件,或许在今天都已经被 RecyclerView 完全替代,但是其中的缓存机制仍然值得我们去了解,对后面学习 ...

最新文章

  1. 一起学WP7 XNA游戏开发(八. 让3d model动起来)
  2. 【观点】互联网抑或使人更愚蠢
  3. bzoj 1632: [Usaco2007 Feb]Lilypad Pond【bfs】
  4. [转帖]Ubuntu 对应内核版本
  5. 我是一位老师,讲课是我的乐趣,可是……
  6. css 控制图片最大宽度
  7. android与js交互
  8. Android坑点-ByteBuffer.array() 入过坑吗
  9. linux iis 环境配置教程,Linux系统Java环境配置教程
  10. python读取txt文件每一行_Python3基础 file for+list 读取txt文本 并 一行一行的输出(低效率)...
  11. TokenInsight:反映区块链行业整体表现的TI指数较昨日同期下跌1.33%
  12. socket网络编程 java_Java Web 基础(一) 基于TCP的Socket网络编程
  13. Corosync与Pacemaker实现nfs作为共享存储的MySQL高可用
  14. 1432: 【蓝桥杯】:剪格子(迷宫问题变体)
  15. PyTorch 入坑八:卷积与转置卷积
  16. MySQL从入门到精通详细教程
  17. 红外遥控器解码串口输出模块结合51单片机+oled屏幕实现遥控器红外解锁( STC89C52RC)
  18. 如何把html网页共享文件夹,如何将文件夹共享 设置共享文件夹教程【详细介绍】...
  19. snapchat注册不到_如何将链接添加到您的Snapchat快照
  20. Flex TLF 相关知识

热门文章

  1. 如何打造一支拖业务后腿的技术团队?
  2. 5G前夜 运营商如何实现网络创新?
  3. 实现多条件模糊查询SQL语句
  4. Petrozavodsk Summer-2016. Ural FU Dandelion Contest
  5. 使用Feign时如何设置Feign的Header信息
  6. Python web 开发:部署一个3行代码的wsgi app
  7. 世界经济论坛2019年年会开幕
  8. [BZOJ] 4552: [Tjoi2016Heoi2016]排序
  9. linux中链表的使用【转】
  10. Linux命令之ssh