博客
关于我
ListView优化
阅读量:58 次
发布时间:2019-02-25

本文共 1164 字,大约阅读时间需要 3 分钟。

第一:重用convertView

在Android开发中,ListView的效率优化是一个重要课题。一个常见的优化手段是重用convertView。通过判断convertView是否为null,我们可以决定是否需要创建新的视图。若convertView为null,则需要生成一个新的布局视图,填充数据后再返回给底层ListView进行展示。这种方式能够有效减少内存的占用,提升应用的运行效率。

第二、通常有一个内部类ViewHolder

为了提高ListView的效率,还可以使用ViewHolder模式。通过创建一个内部类ViewHolder,我们可以为ListView中的各个控件(如TextView、ImageView等)设定引用,避免每次都通过findViewById方法查找控件。这样可以减少findViewById的性能消耗,提升应用的运行速度。

第三、ListView布局文件写高度match_parent,写warp_content至少要测量4次,严重拖慢效率。

在布局文件中,若ListView的高度设置为match_parent,且内容包含warp_content控件时,系统可能需要多次测量才能确定控件的尺寸。频繁的测量会导致布局绘制过程变慢,进而影响ListView的刷新效率。因此,应当尽量避免这种情况,或者通过优化布局设计来减少测量次数。

特别注意:

在使用ViewHolder时,将ViewHolder设为static类型。在第一次创建ViewHolder时,系统会花费一定的时间完成初始化,但之后的创建则会直接使用内存中的ViewHolder实例。这种方式可以确保内存中只存在一个ViewHolder实例,减少内存分配和释放的开销,从而提升应用的性能表现。

可以从三个方面来优化:
  • 异步加载item ListView的每个item都是通过getView方法初始化的。为了提升效率,所有耗时操作(如网络图片加载)应当在非UI线程中执行。无论是从本地还是网络加载图片,都可以通过AsyncTask、Glide等框架进行异步处理,避免阻塞UI线程。
  • 控制异步任务的执行频率 在ListView滑动时,可能会频繁触发异步任务(如图片加载)。为了防止过多的异步任务堆积,造成线程池拥堵,可以在ListView滑动时暂停异步任务的执行。通过设置ListView的OnScrollListener,可以检测滑动状态,进而控制异步任务的启动频率。
  • 开启硬件加速 在Android应用中,开启硬件加速可以显著提升UI层的渲染效率。通过在AndroidManifest.xml中设置hardwareAccelerated="true",可以为应用的Activity开启硬件加速,进一步优化ListView的刷新性能。
  • 转载地址:http://wjh.baihongyu.com/

    你可能感兴趣的文章
    mysql中的四大运算符种类汇总20多项,用了三天三夜来整理的,还不赶快收藏
    查看>>
    mysql中的字段如何选择合适的数据类型呢?
    查看>>
    MySQL中的字符集陷阱:为何避免使用UTF-8
    查看>>
    mysql中的数据导入与导出
    查看>>
    MySQL中的时间函数
    查看>>
    mysql中的约束
    查看>>
    MySQL中的表是什么?
    查看>>
    mysql中穿件函数时候delimiter的用法
    查看>>
    Mysql中索引的分类、增删改查与存储引擎对应关系
    查看>>
    Mysql中索引的最左前缀原则图文剖析(全)
    查看>>
    MySql中给视图添加注释怎么添加_默认不支持_可以这样取巧---MySql工作笔记002
    查看>>
    Mysql中获取所有表名以及表名带时间字符串使用BetweenAnd筛选区间范围
    查看>>
    Mysql中视图的使用以及常见运算符的使用示例和优先级
    查看>>
    Mysql中触发器的使用示例
    查看>>
    Mysql中设置只允许指定ip能连接访问(可视化工具的方式)
    查看>>
    mysql中还有窗口函数?这是什么东西?
    查看>>
    mysql中间件
    查看>>
    MYSQL中频繁的乱码问题终极解决
    查看>>
    MySQL为Null会导致5个问题,个个致命!
    查看>>
    MySQL为什么不建议使用delete删除数据?
    查看>>