博客
关于我
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中频繁的乱码问题终极解决
    查看>>
    MySQL为Null会导致5个问题,个个致命!
    查看>>
    MySQL为什么不建议使用delete删除数据?
    查看>>
    MySQL主从、环境搭建、主从配制
    查看>>
    Mysql主从不同步
    查看>>
    mysql主从同步及清除信息
    查看>>
    MySQL主从同步相关-主从多久的延迟?
    查看>>
    mysql主从同步配置方法和原理
    查看>>
    mysql主从复制 master和slave配置的参数大全
    查看>>
    MySQL主从复制几个重要的启动选项
    查看>>
    MySQL主从复制及排错
    查看>>
    mysql主从复制及故障修复
    查看>>
    MySQL主从复制的原理和实践操作
    查看>>
    webpack loader配置全流程详解
    查看>>
    mysql主从复制,读写分离,半同步复制实现
    查看>>
    MySQL主从失败 错误Got fatal error 1236解决方法
    查看>>
    MySQL主从架构与读写分离实战
    查看>>
    MySQL主从篇:死磕主从复制中数据同步原理与优化
    查看>>
    mysql主从配置
    查看>>
    MySQL之2003-Can‘t connect to MySQL server on ‘localhost‘(10038)的解决办法
    查看>>