## Android RecyclerView复用机制
### 一、流程图
```mermaid
flowchart TD;
    A[初始化RecyclerView] --> B[创建适配器];
    B --> C[设置布局管理器];
    C --> D[设置Item布局];
    D --> E[绑定数据];
    E --> F[显示Item];
```
### 二、步骤            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2023-10-25 05:25:35
                            
                                180阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            前言: 生命总是要有信仰,有梦想才能一直前行,哪怕走的再慢,也是在前进。一、概述RecyclerView作为官方指定的高效、高拓展性的列表控件,做了很好的封装,灵活好用,深受我们喜欢。官方对它的介绍:为大量数据提供有限展示窗口的灵活视图。要想在有限的手机内存中展示大量的数据,并且保证不会OOM,它是怎么做到的呢? 我们在adapter的onCreateViewHolder()和onBindVie            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-25 22:14:48
                            
                                385阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            探究RecyclerView复用缓存机制RecyclerView中onCreateViewHolder与onBindViewHolder执行现象RecyclerView的复用机制及onCreateViewHolder与onBindViewHolder执行时机RecyclerView的回收机制问题结论 RecyclerView中onCreateViewHolder与onBindViewHolder执            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-31 20:07:38
                            
                                193阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            android 浅析RecyclerView回收复用机制及实战,仿探探效果本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布浅析RecyclerView回收复用机制缓存机制-onTouchEvent()入口缓存机制-onLayout()入口复用机制探探效果实战 还是老套路,先来看看实现的效果! 浅析RecyclerView回收复用机制在写这个效果之前,需要熟悉Rv的回收复用机制,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-12 23:03:54
                            
                                212阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            ListView复用、回收AbsListView.RecycleBinRecycleBin 维护了两种类型列表,一种用于保存屏幕上可见的View,一个用于缓存滚动出屏幕的ViewListView滑动过程中,子View完全移出屏幕后,会加入RecycleBin 缓存 子View进入屏幕时,从RecycleBin 中获取缓存View,用于数据绑定。RecyclerView 复用、回收滚动屏幕时,列表先            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-22 19:40:29
                            
                                161阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            字节跳动Android高级岗:说说RecyclerView的回收复用机制            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-06-26 08:08:28
                            
                                211阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            正题RecyclerView 的回收复用机制的内部实现都是由 Recycler 内部类实现,下面就都以这样一种页面的滑动场景来讲解 RecyclerView 的回收复用机制。这个页面每行可显示5个卡位,每个卡位的 item 布局 type 一致。开始分析回收复用机制之前,先提几个问题:Q1:如果向下滑动,新一行的5个卡位的显示会去复用缓存的 ViewHolder,第一行的5个卡位会移出屏幕被回收,            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-28 00:44:24
                            
                                565阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            文章目录1. 缓存回收复用的原理1.1 为什么要有四级缓存,每一级缓存的作用一级缓存二级缓存三级缓存四级缓存1.2 四级缓存是如何工作的2. 源码时序图和解读2.1 缓存回收LinearLayoutManagerRecyclerView2.2 缓存复用LinearLayoutManagerRecyclerView关于mChangedScrap2.3 回收池结构附:时序图代码参考材料  Recyc            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-01-17 09:20:56
                            
                                222阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            开始 最近在研究 RecyclerView 的回收复用机制,顺便记录一下。我们知道,RecyclerView 在 layout 子 View 时,都通过回收复用机制来管理。网上关于回收复用机制的分析讲解的文章也有一大堆了,分析得也都很详细,什么四级缓存啊,先去 mChangedScrap 取再去哪里取啊之类的;但其实,我想说的是,RecyclerView 的回收复用机制确实很完善,覆盖到各种场景中            
                
         
            
            
            
            问题一.RecyclerView中嵌套另外一个RecyclerView时,内部的RecyclerView滑动时状态是不会变化的。原因:解决方案:获取父级的RecyclerView进行判断。 问题二:发现onCreateViewHolder频繁被调用,从而导致卡顿。原因:页面刷新较为频繁。 所以每次notifyDataSetChanged提示刷新的时候,会回收掉所有已经展示的ViewHol            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-12-15 10:09:41
                            
                                478阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            ViewPager2是在RecyclerView的基础上构建而成的,意味着其可以复用RecyclerView对象的绝大部分特性,比如缓存复用机制等。作为ViewPager2系列的第一篇,本篇的主要目的是快速普及必要的前置知识,而内容的核心,正是前面所提到的RecyclerView的缓存复用机制。RecyclerView,顾名思义,它会回收其列表项视图以供重用。具体而言,当一个列表项被移出屏幕后,R            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-31 22:01:34
                            
                                470阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            RecyclerView目前基本上已经替代了ListView,其强大的可定制性和性能上的优化深受开发者的喜爱,这篇文章就不再介绍使用方法,依然是通过带着问题到源码寻找答案,而且更多地通过实践来证实理论。这次项目做的是游戏列表,每个item都有一个下载进度条,我们知道,recyclerview的viewHolder是复用的,在最开始创建了足够的viewholder,后面在滑动过程中就是复用这些最初c            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-16 01:45:11
                            
                                359阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            这是RecyclerView缓存机制系列文章的第一篇,系列文章的目录如下:RecyclerView缓存机制(咋复用?)RecyclerView缓存机制(回收些啥?)RecyclerView缓存机制(回收去哪?)RecyclerView缓存机制(scrap view)如果想直接看结论可以移步到第四篇末尾(你会后悔的,过程更加精彩)。引子如果列表中每个移出屏幕的表项都直接销毁,移入时重新创建,很不经济            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-27 08:45:39
                            
                                1277阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            从RecyclerView的名字就可以看出,它的主要作用就是对View的回收。相比较ListView它的优势是它本身不需要关心视图的问题,它不需要关心如何将子View放在合适的位置,不需要关心如何分割这些子View,更不用关心这些子View的外观。它要做的仅仅是回收和复用的工作。现在我们就来看一下如此优秀强大的RecyclerView它负责的工作都是怎样展开的。在开始之前先来看一下关于Recycl            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-19 13:22:55
                            
                                62阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            做安卓的,应该都有使用过ListView或RecyclerView,并且可能都有遇到过在这个两个控件中使用CheckBox的时候出现勾选错乱的问题。这是因为ListView或RecyclerView都使用了复用机制,当在ListView或RecyclerView中的每一项都添加一个CheckBox时,勾选当前页面的几个CheckBox会发现下面还有其他的CheckBox也被勾选了,今天我们就来讨论            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-13 06:05:37
                            
                                655阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            前面我们在讲RecyclerView回收机制的时候已经提及了它复用机制。但是并没有沿着复用分支继续向下研究,这里将补齐复用分支的源码分析,让我们来看一下RecyclerView是如何实现VH复用的。在讲回收机制的时候我们说回收机制有两个入口onTouch和onLayout。相应的复用同样也是两个入口。但是两个入口的复用逻辑都是从LinearLayoutManager.layoutChunk()开始            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-29 09:22:04
                            
                                227阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            ListView的优化想必大家耳熟能详,其中必有ViewHolder的重用机制,holder的写法就是为了将一些你所需要展现在view上的元素封装好。主要起作用的是convertView.setTag()方法,传入holder,将数据缓存起来,下次使用的时候可避免回收。当然,在数据量小的时候体现不明显,当数据量多且item元素多的时候效果相当显著。废话不多说了,RecyclerView的功能早已超            
                
         
            
            
            
            问题分析RecyclerView是一个大的概念,从界面层次我们分析一下它的组成部分,它是由多个列表项组成的。那我们的研究对象从RecyclerView转到列表项Item上。列表项Item有两个非常重要的内容,一个则是列表项的界面生成,这个和适配器中的onCreateViewHolder相关;另外一个则是列表项的数据绑定,这个和适配器中的onBindViewHolder相关。onCreateView            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-29 11:10:59
                            
                                156阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            本篇内容仅用来记录开发过程,提醒自己。本人目前实习,刚结束安卓三个月,能力有限,如有错误,欢迎指出。在开发项目过程中,使用Recycler有需求需要在不同情况下显示不同的控件。当时并不知道ViewHolder会被复用,并且只针对不同情况进行控件隐藏,但是并未显示,导致复用该ViewHolder的item的某些控件不显示。在空闲时间自己写了一个Demo进行了验证。
	以下是Demo内容
	首先写一个            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-07-04 21:06:57
                            
                                38阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            ❝RecyclerView 是一个强大又灵活的 View,可以用有限的 View 来展示大量的数据。今天我们来看下 RecyclerView 内部是通过怎样的缓存复用机制来实现这一功能的。❞RecyclerRecycler 是 RecyclerView 的内部类,也是这套复用机制的核心,显然 Recycler 的主要成员变量也都是用来缓存和复用 ViewHolder 的:public f            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-23 11:10:59
                            
                                0阅读