博客
关于我
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 innodb通过使用mvcc来实现可重复读
    查看>>
    mysql insert update 同时执行_MySQL进阶三板斧(三)看清“触发器 (Trigger)”的真实面目...
    查看>>
    mysql interval显示条件值_MySQL INTERVAL关键字可以使用哪些不同的单位值?
    查看>>
    Mysql join原理
    查看>>
    MySQL Join算法与调优白皮书(二)
    查看>>
    Mysql order by与limit混用陷阱
    查看>>
    Mysql order by与limit混用陷阱
    查看>>
    mysql order by多个字段排序
    查看>>
    MySQL Order By实现原理分析和Filesort优化
    查看>>
    mysql problems
    查看>>
    mysql replace first,MySQL中处理各种重复的一些方法
    查看>>
    MySQL replace函数替换字符串语句的用法(mysql字符串替换)
    查看>>
    mysql replace用法
    查看>>
    Mysql Row_Format 参数讲解
    查看>>
    mysql select, from ,join ,on ,where groupby,having ,order by limit的执行顺序和书写顺序
    查看>>
    MySQL Server 5.5安装记录
    查看>>
    mysql server has gone away
    查看>>
    mysql slave 停了_slave 停止。求解决方法
    查看>>
    MySQL SQL 优化指南:主键、ORDER BY、GROUP BY 和 UPDATE 优化详解
    查看>>
    MYSQL sql语句针对数据记录时间范围查询的效率对比
    查看>>