android复杂列表滑动卡顿,Android 列表滑动性能优化总结

列表滑动性能优化是一个老生常谈的问题,最近在做项目的时候又遇到了列表滑动卡顿的问题,我在经过多次思考和尝试后,终于找到了滑动卡顿的元凶,于是将经验总结下来。

ViewHolder

先说说最常规的ViewHolder。ViewHolder的出现是为了解决在绑定视图数据的时候使用findViewById遍历视图树(以深度优先的方式)查找视图引起耗时操作的问题,将第一次查找到的视图放入静态的ViewHolder中,以后绑定新数据时直接从ViewHolder中拿到视图引用。在ListView中使用ViewHolder是基本的优化思路,当然最好的是直接使用RecyclerView,它自带了ViewHolder。(推荐使用MultiType作为RecyclerView的Adapter,这个库设计的很优美)

数据处理

很多时候从我们要对服务器上获取下来的列表数据进行一次二次加工,以便转化为我们界面上要显示的数据,这些操作可能会比较耗时。比如字符串拼接、时间格式化等操作都是比较耗时的操作。比较好的实践是将列表数据的加工在notifyDataSetChanged()之前在后台线程做好,在Adapter中只做数据的绑定。

Item View 的变化

有时候我们会根据数据类型来控制一个View的显隐,当给一个View设置setVisibility(View.GONE)的时候,会触发布局的重新测量、布局、绘制等操作,若itemView的布局比较复杂,重新测量绘制会很耗时间,引起列表卡顿。这个时候可以将数据和itemView分解成不同的类型,根据类型来绑定对应的itemView,减少布局的重绘操作。

重用OnClickListener

通常我们为Button设置点击事件的时候都是直接创建一个匿名内部类的对象(new OnClickListener{}),习惯了这种绑定事件的方式后我们可能在列表中也这么做。在列表滑动的时候会不停的重复创建新的OnClickListener的操作,旧的OnClickListener会被标记为需要垃圾回收,当需要回收的对象过多的时候会引起GC,导致列表卡顿。可以创建一个通用的OnClickListener,把数据放入Button的Tag中,根据id来判断是哪个Button执行了点击,来取出数据、执行不同的逻辑。

图片的异步加载

用Glide、Picasso、Fresco等图片异步加载框架。

界面优化

优化布局层级减少过渡绘制、优化布局方式提高布局效率。关于这点官方推荐使用ConstraintLayout,在我目前的实践中,ConstraintLayout作为RecyclerView的Item布局的时候可能会有卡顿现象(主要是布局重绘引起的)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/502719.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php淘客发单_如何使用PHP的curl函数调用维易淘客接口

《如何使用PHP的curl函数调用维易淘客接口》要点:使用curl调用维易淘客接口高佣转链维易淘客接口是用GET方式调用的,直接用GET调用即可,以下用PHP为例:使用curl调用维易淘客接口高佣转链:$apihttp://api.vephp.com/hca…

python背景颜色怎么随机_Python中的随机颜色

我同意TigerhawkT3(1)你教授对pick_color()的实现是垃圾。但我不认为random.choice(),或者你教授滥用random.shuffle()的方式是最好的选择。两者的问题是,在连续调用时可以获得相同的颜色,这是在正方形内绘制正方形时不…

python 解决手机拍的书籍图片发灰的问题

老师给发的作业经常是手机拍的,而不是扫描,背景发灰,如果二次打印就没有看了,象这样: 如果使用photoshop 处理,有些地方还是扣不干净,不如python 做的好,处理后如下: 具体…

2016年cypher资源_2021-2027年中国鱿鱼行业市场供需规模及未来前景分析报告

报告类型:产业研究报告格式:电子版、纸介版、电子纸介出品单位:智研咨询官网链接:中国产业信息网 - 产业前景投资趋势门户-智研旗下产业信息咨询平台​www.chyxx.com报告链接:2021-2027年中国鱿鱼行业市场供需规模及未…

地面控制点的定义与作用_什么是地面塌陷

地面塌陷2020年1月13日,青海西宁市城中区一公交车站附近地面突然塌陷,一辆搭载乘客的公交车掉入坑中,致使9人遇难。2019年12月12日,厦门吕厝路口地铁1号线和2号线外的配套物业开发项目施工现场发生约500平方米地面塌陷&#xff0c…

html填满剩余空间,html – 标题,两侧填充剩余空间

我被要求创建这个标题,纯粹用css,它甚至可能吗?文本的背景需要保持透明,h2需要跨越任何容器的宽度,并且左右边框自动填充剩余空间.h2 {font-size:42px;line-height:48px;width:100%;overflow: hidden;&:before {content:;position:relative;padding-left:50px;p…

python代码自动生成器下载_Python代码生成器

iefans下载为用户提供的Python代码生成器是一款高效实用的多功能代码自动编辑软件,该软件采用Delphi语言开发,同时内置了大量的编程学习内容与百款实例代码,让用户能够使用Python代码生成器快速插入判断、流程控制、算法等重复性很高的架构&a…

animate动画案例_animate动画案例——小小购物狂

如今各平台小动画层出不穷,大部分这种二维动画都是animate或者flash做的,例如下面这种效果animate既可以将各种内容做成动画。既可以设计适合游戏、电视节目和 Web 的交互式动画。让卡通和横幅广告栩栩如生。也可以用来创作动画涂鸦和头像。并向电子学习…

男孩子不上学了学计算机要学历吗,十三岁男孩不上学,能学什么手艺?

十三岁男孩不上学,能学什么手艺?十三岁时的孩子,有些学校要求我们先上过义务教育再去学习,有些学校是允许十三岁就直接接受教育的,有些学校是对十三岁还在上半学的学生进行补习一下的。那么,十三岁男孩不上学,可以学什么手艺?其实,有很多孩子对自己在学校学习时未能掌握的知识…

iview select 怎么清空_如何解决iview 的select下拉框选项错位的问题,具体操作如下...

下面我就为大家分享一篇完美解决iview 的select下拉框选项错位的问题,具有很好的参考价值,希望对大家有所帮助。在使用iview的过程中,我遇到这样一个问题,在Model中使用select下拉框组件。但是当弹出框超过一屏需要滚动时&#xf…

numpy 拼接_数据分析-numpy的拼接与交换

1.数组的拼接import numpy as npt1np.arange(24).reshape((4,6))t2np.arange(100,124).reshape((4,6))print(t1)print("*"*50)print(t2)print("*"*50)#竖直拼接t3np.vstack((t1,t2))print(t3)print("*"*50)#水平拼接t4np.hstack((t1,t2))print(t…

在HTML标签中 lt h5 gt 表示,HTML lt;blockquotegt; 标签

HTML <blockquote> 标签2020-12-04定义和用法标签定义块引用。与 之间的所有文本都会从常规文本中分离出来&#xff0c;经常会在左、右两边进行缩进(增加外边距)&#xff0c;而且有时会使用斜体。也就是说&#xff0c;块引用拥有它们自己的空间。全局属性标签支持HTML中的…

shell 做加法运算_使用shell脚本实现加法乘法运算

编写一个shell脚本&#xff0c;实现加法和乘法运算。#!/bin/bash#Function:num1num2 num3*num4sum(){read -p "please key in first number:" num1read -p "please key in second number:" num2let num3${num1}${num2}echo -e "\033[32m $num1 $num2…

iptables 指定网卡_LINUX系统下的IPTABLES防火墙系统讲解(二)实战操作

iptables数据流方向iptables操作命令:#iptables --helpUsage: iptables -[AD] chain rule-specification [options]iptables -[RI] chain rulenum rule-specification [options]iptables -D chain rulenum [options]iptables -[LFZ] [chain] [options]iptables -[NX] chainipta…

计算机应用技术环境评估,计算机应用教程(第7版)(Windows 7与Office 2007环境)习题解答与上机练习...

计算机应用教程(第7版)(Windows 7与Office 2007环境)习题解答与上机练习语音编辑锁定讨论上传视频《计算机应用教程(第7版)(Windows 7与Office 2007环境)习题解答与上机练习》是2012年9月21日清华大学出版社出版的图书&#xff0c;作者是潘晓南、游语秋、张京、陈洁。[1]书 …

机考怎么作弊_电脑上考试如何作弊 电脑上考试不能复制粘贴怎么办

电脑上考试也就是我们常说的机考&#xff0c;机考也分两种&#xff1a;一种是内网机考&#xff0c;也就是像我们考驾照那样&#xff0c;只能登陆访问答题的系统&#xff0c;其他的外网比如百度是打不开的&#xff0c;还有一种比较自由&#xff0c;就是你可以随意登陆访问&#…

java接口文档生成工具_接口文档生成

一、为什么要写接口文档&#xff1f;1.正规的团队合作或者是项目对接&#xff0c;接口文档是非常重要的&#xff0c;一般接口文档都是通过开发人员写的。一个工整的文档显得是非重要。2.项目开发过程中前后端工程师有一个统一的文件进行沟通交流开发&#xff0c;项目维护中或者…

联想计算机如何设置用户名和密码忘了,联想(Lenovo)路由器无线wifi密码忘记了怎么办啊?...

联想(Lenovo)路由器无线wifi密码忘记了怎么办&#xff1f;忘记wifi密码这个问题&#xff0c;很多用户都会遇到。因为手机、笔记本、平板电脑在首次连接wifi信号后&#xff0c;会自动保存该wifi信号密码&#xff0c;以后会自动进行连接&#xff0c;无需用户手动输入wifi密码&…

windows服务器迁到_Windows Server 2008 R2 DNS 服务器迁移方法

因为都是Windows 平台&#xff0c;这不算什么事。好吧&#xff0c;看一下&#xff0c;我们的环境&#xff1a;原DNS服务器&#xff1a;主机名&#xff1a; Win08-01 IP地址&#xff1a;10.200.201.11新DNS服务器(临时主机名和IP地址)&#xff0c;因为迁移成功后&#xff…

mysql binlog查看_MySQL--17 配置binlog-server 及中间件

配置binlog-server修改mha配置文件[rootmysql-db03 ~]# vim /etc/mha/app1.cnf[binlog1]no_master1hostname10.0.0.53master_binlog_dir/data/mysql/binlog/备份binlog#创建备份binlog目录[rootmysql-db03 ~]# mkdir -p /data/mysql/binlog/#进入该目录[rootmysql-db03 ~]# cd …