首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

离线时回收视图不调用onCreateViewHolder

是指在Android开发中,当RecyclerView的视图离线(即不可见)时,系统不会调用onCreateViewHolder方法来创建新的视图。这是因为RecyclerView的回收机制会重用之前创建的视图来填充新的数据,以提高性能和节省资源。

在RecyclerView中,当视图离线时,会调用onBindViewHolder方法来更新视图的内容。这意味着我们需要在onBindViewHolder方法中更新视图的数据,而不是在onCreateViewHolder方法中创建新的视图。

离线时回收视图不调用onCreateViewHolder的优势是可以减少视图的创建和销毁次数,提高了应用的性能和响应速度。同时,通过重用已有的视图,可以减少内存的占用,提高应用的稳定性。

这种回收机制适用于大量数据列表的展示,比如社交媒体的消息列表、商品列表等。在这些场景下,用户可能需要频繁地滚动列表,如果每次滚动都重新创建视图,会导致性能下降和卡顿现象。通过回收和重用视图,可以有效地提高列表的滚动流畅性和用户体验。

在腾讯云的产品中,与RecyclerView相关的产品是腾讯云移动直播(Tencent Cloud Mobile Live),它提供了一套完整的移动直播解决方案,包括直播推流、直播播放、直播录制等功能。可以通过腾讯云移动直播来实现类似RecyclerView的列表展示功能,并且腾讯云移动直播提供了丰富的API和SDK,方便开发者进行集成和开发。

更多关于腾讯云移动直播的信息和产品介绍,可以访问腾讯云官网的移动直播产品页面:https://cloud.tencent.com/product/mlvb

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • Kotlin入门(23)适配器的进阶表达

    前面在介绍列表视图和网格视图,它们的适配器代码都存在视图持有者ViewHolder,因为Android对列表类视图提供了回收机制,如果某些列表项在屏幕上看不到了,则系统会自动回收相应的视图对象。...随着用户的下拉或者上拉手势,已经被回收的列表项要重新加载到界面上,倘若每次加载都得从头创建视图对象,势必增加了系统的资源开销。...所以ViewHolder便应运而生,它在列表项首次初始化时,就将其视图对象保存起来,后面再次加载该视图,即可直接从持有者处获得先前的视图对象,从而减少了系统开销,提高了系统的运行效率。...、onCreateViewHolder、onBindViewHolder三个方法,以及视图持有者的类定义 class RecyclerGridAdapter(context: Context, private...这下不管是在Activity代码,还是在适配器代码中,均可将控件名称拿来直接调用了。

    1.8K41

    Android开发之漫漫长途 XV——RecyclerView

    你想要控制Item增删的动画,ListView呢我们只能自己通过属性动画来操作 Item 的视图。...RecyclerView重写的draw()方法,随后super.draw()即调用View的draw(),该方法会先调用onDraw()(这个方法在RecyclerView重写了),再调用dispatchDraw...,我们依然调用内部的mInnerAdapter的onCreateViewHolder方法 创建好ViewHolder后,便进行绑定的工作了 /** * 绑定数据 * @param holder *...RecyclerView的缓存机制 RecyclerView和ListView的回收机制非常相似,但是ListView是以View作为单位进行回收,RecyclerView是以ViewHolder作为单位进行回收...视图将被丢弃到给定的回收器中(即参数recycler)。 *回收器(即Recycler)可能更喜欢重用scrap的视图

    2.2K20

    浅谈RecyclerView的性能优化

    众所周知,RecyclerView拥有四级缓存,它们分别是: Scrap缓存:包括mAttachedScrap和mChangedScrap,又称屏内缓存,参与滑动回收复用,只是用作临时保存的变量。...RecyclerView的回收原理 (1)如果是RecyclerView滚动情况下缓存(比如删除item)、重新布局。...因为Scrap缓存池参与滚动的回收复用,所以CacheView缓存池被称为一级缓存,又因为ViewCacheExtension缓存池是给开发者定义的缓存池,一般不用到,所以RecycledViewPool...2.数据处理与视图绑定分离,去除onBindViewHolder方法里面的耗时操作,只做纯粹的数据绑定操作。...优化onCreateViewHolder方法 1.降低item的布局层级,可以减少界面创建的渲染时间。 2.Prefetch预取。

    1.8K10

    CreateProcess不显示或者创建窗口 (或用虚拟桌面实现后台调用外部程序)

    【方法一:】 将 CreateProcess()的参数dwCreationFlags指定为CREATE_NO_WINDOW,即以创建窗口方式创建DOS进程。 【参考代码:】 if (!...这样就需要我在程序里调用他的这个EXE可执行文件。...调用EXE文件,可以用WINEXEC()、SHELLEXECUTE()和CreateProcess()等函数来实现,我这里就用CreateProcess()来调用。...实在没办法,我想在打开的时候不让用户看到这个执行文件:首先调用FINDWINDOW来查找窗口的句柄,之后再用SendMessage()来隐藏窗口,但是还是会有一瞬主窗口被显示出来的,或许你会说我BT吧,...好了,这样就几乎完美的实现了一个后台调用程序的功能,它对最终客户来说将是完全透明的,客户根本感觉不到后台还有另一个程序在工作。

    3.9K30

    如何解决mybatis-plus调用update方法,自动填充字段生效问题

    走自动填充逻辑。...其实体对象是null,导致调用自动填充方法,得到的tableInfo是null,因而无法进入自动填充实现逻辑,因此导致填充自动失效 如何解决update(Wrapper updateWrapper...),自动填充生效问题 通过源码分析我们得知,只要tableInfo不为空,则就会进入自动填充逻辑,而tableInfo不为空的前提是更新或者插入的实体不是null对象,因此我们的思路就是在调用update...this.applicationContext = applicationContext; } /** *重写update(Wrapper updateWrapper), 更新自动填充生效问题...不过其他版本的分析思路大同小异,都是去跟踪什么地方调用了自动填充的逻辑。

    4K00

    实战 | 认识 RecyclerView

    当列表滑动的时候,实际上只有少量邻近的视图会显示在屏幕上。当视图滑出屏幕,RecyclerView 会复用它并且填充新的数据。...由于它是通过回收已有的结构而不是持续创建新的列表项,所以它可以有效提高应用的时间效率和空间效率。...粉红色的方格表示屏幕上正在显示的表项,黄色的方格表示屏幕可视范围之外的表项是如何被回收并转为新的视图 为什么您需要使用 RecyclerView 呢?...RecyclerView 使用 ViewHolder 模式,这样做可以提高性能,因为它无需频繁调用 findViewById() 方法即可访问表项的视图; RecyclerView 使用 LayoutManager...重写 onCreateViewHolder() 当 ViewHolder 创建的时候会调用该方法。在该方法里进行初始化和填充 RecyclerView 中的表项视图

    1.2K30

    RecyclerView技术栈参考资料:

    滚出可见区域的条目将被回收,并在下一个条目可见的时候被复用。 我们可以从下图中得到更直观的解释: ? 左边的图是数据初始化后的示例,当向上滚动视图的时候,当条目不可见之后将被回收。...右图中红色区域内的两条不可见条目,将被放到缓存队列中以便新的条目可见进行复用。...不过,视图回收本身并不是什么新鲜事。但是回想之前我们写的ListView,无论从它的的性能表现着手,还是语法的书写,甚至数据的绑定都未免略显臃肿。...这就需要我们重写以下两个函数: public VH onCreateViewHolder(ViewGroup parent, int viewType) 创建Item视图,并返回相应的ViewHolder...我们通过调用.notifyDataSetChanged(),来刷新列表,因为这样做会触发列表的重绘,所以并不会出现任何动画效果,因此需要调用一些以notifyItem*()作为前缀的特殊方法,比如: public

    1.2K10

    从 Android 开发到读懂源码 第05期:Leanback 结构源码简析

    中每一个 Item 的视图,如果使用 ListRow 则是创建每一行中的每一个 Item 视图 @Override public ViewHolder onCreateViewHolder...get(...) ... } // 当 ArrayObjectAdapter 作为行/列的数据提供者,缓存每行/列的视图数据提供者...parent) { // 创建临时 ViewHolder,这个 holder 只包含列表视图 HorizontalGridView,包含头部视图 ViewHolder...和 onBindViewHolder 等行为抽离出去,让每个有不同样式的 CustomPresenter 自身去实现具体视图和数据行为,这样当需要增加新的样式和数据,只需要往桥接类中添加对应的 Presenter...上面分析 ListRowPresenter 可以看到,其内部默认帮我们调用了 FocusHighlightHelper.setupBrowseItemFocusHighlight() 方法,在 Item

    2.2K71

    偷懒新姿势,打造属于RecyclerView的万能适配器Adapter和ViewHolder

    资源回收,数据绑定,布局显示,分割线,Item动画多个模块高度解耦,灵活优雅。其实,RecyclerView在使用上已经是相当简单了(个人觉得),但仍有很多代码是可以加以封装的。...onCreatedViewHolder()方法作用是绑定item视图,可以进一步封装,给子类提供一个getLayoutItemId的抽象方法,这样就可以简化成一行代码了。...因此我们发现,这个adapter的核心代码在与onBindViewHolder()中,作用是将数据跟视图(ViewHolder)绑定,可以给子类提供一个bindData()抽象方法。...RecyclerView强制我们使用ViewHolder模式,然而缺不可避免地要写findViewById代码,有没有办法写这样的代码呢?甚至连ViewHolder都不写呢?当然可以!...public void bindData(RecyclerViewHolder holder, int position,String item) { //调用

    1.4K60

    郭神的抽丝剥茧心法修炼: 深剖RecyclerView

    所以,我在阅读 RecyclerView 源码的时候先确定好自己想好了解的功能点: 数据转化为具体的子视图视图回收利用方式。 布局多样性原因。 布局动画多样性原因。...以上是我们使用 RecyclerView 的时候能够直观看到的部分,还有一个很重要但是直接使用的类: 负责 ViewHolder 的回收和提供。 二,源码分析 1....,因为 RecyclView 中的 Adapter 为空,Adapter 为空,就没有数据,那看一个空视图还有什么意思呢?...,还会涉及到视图回收,LayoutManager 在回收的过程中,大概做了如下的事情: 找出需要回收视图。...通知父布局也就是 RecyclerView 移除子视图。 通知 Recycler 进行回收管理。

    1.4K20

    RecyclerView实现混合布局

    PS:好长时间写博客了,起初是不知道写些什么,后来接触了到了很多东西,原本看似简单的东西,背后都隐藏着巨大的秘密,想handler的使用,一般情况下会引起内存泄漏问题,想着找到方法结局不就得了吗,可是谁想查阅资料发现.../** * 加载视图 * */ @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup...list中累加数据,这样就有点麻烦了 不挑出来直接就只判断type,然后根据type去调用不同的layout,然后在绑定数据的方法中再次判断是不是自己想要的ViewHolder,最后赋值显示。...{ //视图显示 //创建view视图 switch (viewType) { case 1: return new TypeViewHolderOne...2:加载多个布局文件(item)需要加入Type字段去判断是哪一个item。

    2.2K20

    Recyclerview竟能如此丝滑,这14个优化策略不容错过...

    减少绘制: 尽可能减少视图的绘制次数,避免过度绘制带来的性能消耗。 滑动优化: 在滑动过程中,尽可能的减少耗时操作,避免影响滑动效果。 预加载: 预加载即将显示的视图,提高展示性能。...如果Item高度固定或者会发生变化,应该避免使用该方法,否则可能导致布局显示异常。...setInitialPrefetchItemCount(10) 滑动优化 在onCreateViewHolder中进行必要的初始化操作 在ViewHolder的创建阶段,进行必要的初始化操作,如设置监听器等...override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { val...在 onViewRecycled(holder: ViewHolder) 方法中,我们可以执行一些资源释放操作,例如释放ViewHolder中的图片资源、移除监听器等,以便在ViewHolder被回收及时释放相关资源

    1.1K10

    笔记——RecycleView相关(五)

    《个人平时笔记,看到的同学欢迎指正错误》 1、RecycleView复用原理:https://www.cnblogs.com/dasusu/p/7746946.html 回收的逻辑比较简单:...由 LayoutManager 来遍历移出屏幕的卡位,然后对每个卡位进行回收操作,回收,都是把 ViewHolder 放在 mCachedViews 里面,如果 mCachedViews 满了,那就在...mCachedViews 里拿一个 ViewHolder 扔到 ViewPool 缓存里,然后 mCachedViews 就可以空出位置来放新回收的 ViewHolder 了。...,回收,最新的 ViewHolder 都是往 mCachedViews 里放,如果它满了,那就移出一个扔到 ViewPool 里好空出位置来缓存最新的 ViewHolder。...如果mCachedViews——>ViewPool 中都没有找到 ViewHolder 来使用的话,那就调用 Adapter 的 onCreateViewHolder 来创建一个新的 ViewHolde

    42640

    Android新组件RecyclerView介绍,其效率更好

    RecyclerView.Adapter { private List list; /** * 这里和使用listview使用的...MyAdapter(List list) { this.list = list; } @Override public ViewHolder onCreateViewHolder...3、RecyclerView优点和缺点 优点: RecyclerView本身它是不关心视图相关的问题的,由于ListView的紧耦合的问题,google的改进就是RecyclerView本身参与任何视图相关的问题...更进一步来说就是RecyclerView它只负责回收和重用的工作,这也是它名字的由来。 所有关于布局、绘制和其他相关的问题,也就是跟数据展示相关的所有问题,都被委派给了一些”插件化”的类来处理。...LayoutManager:将每个条目的视图放置于适当的位置。 ItemDecoration:在每个条目的视图的周围或上面绘制一些装饰视图

    1.3K90
    领券