首页 > 其他分享 >RecyclerView的复用与回收

RecyclerView的复用与回收

时间:2024-04-11 14:03:07浏览次数:25  
标签:RecyclerView 流程 复用 回收 RecycledViewPool mCachedViews

目录

0.前言:推荐初学者阅读RecyclerView机制

1.复用与回收的关系

1.1复用流程

1.2回收流程

1.3复用与回收的先后关系

2.刷新机制


0.前言:推荐初学者阅读RecyclerView机制

http://t.csdnimg.cn/2hUeU

1.复用与回收的关系

滚动屏幕——“先复用,再回收

1.1复用流程

复用流程:缓存 mCachedViews 取 >

                                     缓存 RecycledViewPool 取 >                                                                                                                  Adapter.onCreateViewHolder()直接创建新的

1.2回收流程

遍历移除屏幕的 View,从 View的 LayoutParams 中取出 ViewHolder,塞入 2级缓存 mCachedViews
                 如果 mCachedViews 满了(容量2),则 mCachedViews 移除第一个,用来放要回收的 ViewHolder
                 如果 RecycledViewPool 对应 viewType 的 List 没满(容量5),则从 mCachedViews 移除的 ViewHolder 放入 RecycledViewPool

                 如果RecycledViewPool满了,将会直接丢弃viewHolder

1.3复用与回收的先后关系

复用的对象是原就在mCachedViews,ReclerViewPool内的,不算马上消失的

而回收对象,是马上消失的item,等到复用完成后,这些item才会加入mCachedViews或ReclerViewPool内

2.刷新机制

RecyclerView 支持局部刷新

1、notifyItemChanged(int position, Object payload)
payload参数,传入非空Object对象

2、onBindViewHolder(RecyclerHolder holder, int position, List payloads)
payloads.size 永远是 1,根据 payload参数值,实现局部刷新

标签:RecyclerView,流程,复用,回收,RecycledViewPool,mCachedViews
From: https://blog.csdn.net/m0_74837900/article/details/137634548

相关文章

  • RecyclerView与ListView区别
    目录1.先说结论2.继承关系3.布局操作4.动画效果5.数据刷新方式6.缓存机制6.1ListView6.2 RecyclerView缓存实例1.先说结论RecyclerView是我们优先考虑的,已经规范化的,自带动画效果的,布局更多样的控件2.继承关系ListView-》继承BaseAdapter,需要自定义ViewHold......
  • selenium-浏览器复用-Invalid Status code=403 text=Forbidden
    问题:selenium-java版本为4.1.4、4.8.2+Java8运行时报InvalidStatuscode=403text=Forbidden 运行代码:publicclassRemoteTest{publicChromeOptionsoptions;publicWebDriverdriver;@TestpublicvoidremoteTest(){options=newC......
  • 吐槽 WPS 流氓行为: WPS 未经用户允许, 就建立了 WPS本地云盘 , 然后 云文档的文件 莫
    WPS云文档简介具体使用参考下面链接WPS系列课-WPS云文档新手教程WPS具有免费的1GB云空间,对于文档类来说,免费空间够用了,毕竟不跟百度云之类的通用云存储一样,WPS云主要是以文档为主.我可以在WPS云创建一个云文档,我可以在电脑编辑完毕后,用手机WPS继续编辑.这很方......
  • 深浅拷贝、垃圾回收机制、栈区堆区、文件的操作
    【一】深浅拷贝【1】深浅拷贝问题无论深拷贝还是浅拷贝都是用来复制对象的(1)浅拷贝浅拷贝,只会复制一层,如果copy的对象中有可变数据类型,修改可变数据类型还是会影响拷贝的对象#【1】浅拷贝#必须是修改源数据类型中的可变数据类型才生效#num_list=[1,2,3,4,[1,......
  • Lua的垃圾回收
    1弱引用表1.1弱引用如果一个对象被引用,那么垃圾回收器不会回收该对象,这就是“强引用”。与“强引用”对应,如果一个对象没有被引用,或者仅被“弱引用”,那么垃圾回收器会忽视弱引用,回收该对象。1.2弱引用表指元素均被“弱引用”的表。我们无法通过变量直接“弱引用”一个对象......
  • 垃圾回收机制
    垃圾回收机制(GC)定义:是python自带的一种机制用来回收变量值所占的内存空间堆heap堆区:变量值存放区域栈stack栈区:变量名和值内存地址关联的区域小整数池​ [-5,256]作用:引用计数为主变量值被变量名引用的次数标记清除为辅当一个变量值被引用时,Python自带......
  • CondeseNetV2:清华与华为出品,保持特征的新鲜是特征复用的关键 | CVPR 2021
    论文提出SFR模块,直接重新激活一组浅层特征来提升其在后续层的复用效率,而且整个重激活模式可端到端学习。由于重激活的稀疏性,额外引入的计算量非常小。从实验结果来看,基于SFR模块提出的CondeseNetV2性能还是很不错的,值得学习 来源:晓飞的算法工程笔记公众号论文:CondenseNet......
  • oracle 数据库精简模式磁盘空间回收处理
            最近遇到的项目中,需要部署几套oracle19cRAC数据库,在进行存储磁盘卷划分的时候,发现只能分配精简卷模式的磁盘,出于性能以及安全考虑,咨询存储原厂答曰该powerstore存储只支持精简磁盘卷模式。    自oracle12c开始,asm开始支持精简卷模式,asm磁盘组......
  • 波分复用:光通信中的多彩世界
    什么是光通信光通信是一种利用光波传输信息的通信方式。它主要通过光纤来传递光信号,这些信号可以携带大量的数据,从而实现高速度和大容量的通信。光通信的基本组成包括:发送机:将电信号转换成光信号。光纤:作为传输媒介,光信号在其中传播。接收机:将光信号转换回电信号。  光......
  • 面向对象设计原则实验之“合成复用原则”
    优先使用对象组合,而不是通过继承来达到复用的目的。某软件公司开发人员在初期的CRM(客户关系管理)系统设计中考虑到客户数量不多。系统采用Access作为数据库,与数据库操作有关的类(例如CustomerDAO类等)都需要连接致据库,连接数据库的方法getConnection()封装在DBUtil类......