当前位置: 首页 > news >正文

一学一做看视频网站有哪些专门看网站的浏览器

一学一做看视频网站有哪些,专门看网站的浏览器,陕西省高速公路建设集团公司网站,建筑公司宣传册设计样本掌握 Android 中的 RecyclerView 优化 一、RecyclerView Pool以及何时使用它二、onCreateViewHolder 和 onBindViewHolder三、优化 RecyclerView 的不同方法四、视图无效与请求布局五、ViewHolder模式六、默认的废料和脏视图类型七、结论 RecyclerView 是 Android 中一个功能强…

掌握 Android 中的 RecyclerView 优化

  • 一、RecyclerView Pool以及何时使用它
  • 二、onCreateViewHolder 和 onBindViewHolder
  • 三、优化 RecyclerView 的不同方法
  • 四、视图无效与请求布局
  • 五、ViewHolder模式
  • 六、默认的废料和脏视图类型
  • 七、结论

RecyclerView 是 Android 中一个功能强大的小部件,用于高效显示大型列表或数据网格。为了确保应用程序的性能和响应能力,优化 RecyclerView 实现至关重要。这里我们将探讨各种技术和概念,帮助充分利用 RecyclerView。

一、RecyclerView Pool以及何时使用它

RecyclerView Pool 是一种帮助管理 RecyclerView 中视图的内存和性能的机制。它本质上是一个缓存,用于保存当前在屏幕上不可见但在不久的将来可能再次需要的视图。这显着减少了每次新项目进入可见区域时膨胀新视图的开销。

何时使用 RecyclerView Pool:

  • 处理大型列表或数据网格时使用它。
  • 当列表中的项目具有不同的视图类型时,请选择 RecyclerView Pool。

二、onCreateViewHolder 和 onBindViewHolder

在RecyclerView中,onCreateViewHolder和onBindViewHolder是适配器中必不可少的方法。它们共同为列表中的每个项目创建和绑定视图。

  • onCreateViewHolder在需要创建新视图时被调用。它负责扩展布局并创建 ViewHolder 实例。
  • 当现有视图被新项目重用时,将调用onBindViewHolder 。它将数据绑定到视图持有者,允许您更新视图的内容。
  • onBindViewHolder不应该用于绑定点击侦听器,我们应该注意我们在其中执行的匿名对象或任务。仔细阅读下面的代码,然后我会解释为什么?
class  MyAdapter ( private  val items: List<Item>) : RecyclerView.Adapter<MyAdapter.ViewHolder>() { inside  class  ViewHolder (itemView: View) : RecyclerView.ViewHolder(itemView) { init { itemView.setOnClickListener { // 处理项目click here val position = adapterPosition if (position != RecyclerView.NO_POSITION) { val clickedItem = items[position] // 处理 clickedItem 的点击事件} } } } override  fun  onCreateViewHolder (parent: ViewGroup , viewType: Int ) : ViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, Parent, false ) return ViewHolder(view) } override  fun  onBindViewHolder (holder: ViewHolder ,position: Int ) { val currentItem = items[position] / / 此处将数据绑定到视图持有者} override  fun  getItemCount () = items.size 
}
  • 在onBindViewHolder中,为每个项目单独生成单击侦听器,从而导致多个侦听器实例。通过将点击监听器放置在 中ViewHolder,它们在 ViewHolder 创建时就形成了,由于 ViewHolder 的可重用性,提高了内存效率。

三、优化 RecyclerView 的不同方法

  1. 使用图像库:

处理图像时,建议使用提供位图池的图像库。这可以防止过多的内存使用和频繁的垃圾收集。

Glide.with( this ) .load(imageUrl) .placeholder(R.drawable.placeholder_image) .error(R.drawable.error_icon) .into(imageView)
  1. 优化图像尺寸:从服务器获取图像尺寸和宽高比,以避免不必要的调整大小和缩放。
  2. setHasStableIds:此方法应用于setHasStableIds(true)启用稳定的项目 ID。这有助于有效地更新和重新排序项目,而无需不必要的重新绑定。
class  MyAdapter ( private  val itemList: List<Item>) : RecyclerView.Adapter<MyAdapter.ViewHolder>() { init { setHasStableIds( true ) // 为此适配器启用稳定 ID} //....}
  1. setHasFixedSize:如果RecyclerView大小本身是固定的并且不会因其内容而改变,则使用它setHasFixedSize(true)可以通过避免不必要的布局计算来帮助提高性能。
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView) 
recyclerView.setHasFixedSize( true ) // 为 RecyclerView 启用固定大小
  1. setItemViewCacheSize:使用此方法调整缓存大小,以控制保留多少个离屏视图。这可以帮助管理内存使用。
val recyclerView = findViewById<RecyclerView>(R.id.recyclerView) 
recyclerView.setItemViewCacheSize( 10 ) // 根据项目大小将视图缓存大小设置为自定义值

四、视图无效与请求布局

  • Invalidate:用于指示视图的内容已更改并且需要重新绘制。
  • requestLayout:用于请求新的布局通道,影响视图的大小和位置。

您可能想知道为什么我突然谈论invalidate与requestLayout。让我解释。

我讨论了“无效”与“请求布局”,以说明它们如何影响视图的生命周期。这会影响屏幕重绘时间,过多的布局和绘制阶段会降低性能。要优化 Android 页面,尤其是 RecyclerView,彻底掌握视图生命周期至关重要。

让我用一个例子来进一步解释一下:

当 TextView 的 wrap_content 与 100dp 固定时,将或应该调用什么(invalidate 或 requestLayout)?

回答:

当 TextView 的宽度设置为 时wrap_content,调用requestLayout()会更合适。这是因为这requestLayout()表明视图层次结构需要重新测量和布局,以确保内容正确地适合边界。

当 TextView 的宽度固定时(例如,设置为特定值,如100dp),调用invalidate()通常就足够了。它通知系统视图的内容已更改,并且需要在现有布局范围内重新绘制。这可以避免在更新视图外观时进行不必要的重新布局计算。

五、ViewHolder模式

ViewHolder 模式是一种设计模式,它通过最大限度地减少对 .recyclerview 的调用次数来增强 recyclerview 的性能findViewById()。它涉及创建一个 ViewHolder 类,该类保存对项目布局中视图的引用。这允许在用户滚动列表时有效地重用视图。有关 ViewHolder 模式的综合示例,请查看此链接。

六、默认的废料和脏视图类型

在RecyclerView中,每种视图类型的废视图和脏视图的默认计数设置为 5。对于标题等仅 1 或 2 个剪贴视图就足够的情况,此通用编号可能不是最佳选择。废料视图是可重用的、分离的视图,可以轻松地重新附加。

为了提高内存效率,您可以根据每个特定视图类型的流行程度自定义池大小,从而定制剪贴视图行为。这种方法通过有效管理RecyclerView中不同类型项目的剪贴视图数量,确保优化内存使用。

val customRecycledViewPool = RecyclerView.RecycledViewPool().apply { setMaxRecycledViews(viewType, poolSize) // 设置自定义 viewType 和 poolSize}

七、结论

优化 RecyclerView 实施对于保持流畅且响应迅速的用户体验至关重要。通过理解 RecyclerView Pool 和 ViewHolder 模式等概念,并优化视图创建和绑定,您可以确保您的应用程序有效地处理大量数据。

请记住,每种优化技术都有特定的目的,并且应用这些技术的组合可以显着提高 RecyclerView 的性能。

http://www.ds6.com.cn/news/23103.html

相关文章:

  • 永年网站建设狼雨的seo教程
  • 网站是否有管理员权限牛排seo系统
  • 武汉政府网站建设英文网站建设
  • 北京网站建设公司案例免费做网站怎么做网站
  • 广东东莞房价2022最新价格南宁正规的seo费用
  • 合肥网站建设佳蓝网络营销推广方案设计
  • 网站开发团队成员介绍建设网站的网络公司
  • 网站离线浏览器 怎么做上海网站快速排名提升
  • ftp上传后没有网站怎么进行网络营销
  • 广州越秀区最新疫情seo公司外包
  • 做网站网站专业搜索引擎优化电话
  • 学习电子商务网站建设与管理感想百度sem竞价托管
  • 找人做网站注意什么问题实时新闻
  • wordpress数据表开头苏州首页关键词优化
  • 如何在企业版社保网站做增员海南快速seo排名优化
  • 网站一年费用网页制作模板
  • 文件上传到沧州建设局网站肇庆seo按天计费
  • 实施网站推广的最终目的国外引流推广平台
  • 阿里云ecs建网站seo搜外
  • 如何用国外网站做头条网站怎么做收录
  • 做网站怎样设置搜索引擎长沙网红打卡景点排行榜
  • 网站开发是什么语言推广网
  • 谁有那种手机网站徐州百度seo排名
  • 重庆网站建设近重庆零臻科技谈谈对seo的理解
  • 做网站是什么工作免费的客户资源怎么找
  • 网上有做衣服的网站百度网站的网址是什么
  • 建设网站分几个步骤网络项目怎么推广
  • 沭阳做网站公司排名前十怎样在百度上发布信息
  • 影视怎么建设网站关于进一步优化 广州
  • 做的好点的外贸网站小红书推广方案