博客
关于我
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/

    你可能感兴趣的文章
    Nginx学习总结(13)——Nginx 重要知识点回顾
    查看>>
    Nginx学习总结(14)——Nginx配置参数详细说明与整理
    查看>>
    nginx学习笔记002---Nginx代理配置_案例1_实现了对前端代码的方向代理_并且配置了后端api接口的访问地址
    查看>>
    Nginx安装与常见命令
    查看>>
    Nginx安装及配置详解
    查看>>
    nginx安装配置
    查看>>
    Nginx实战经验分享:从小白到专家的成长历程!
    查看>>
    Nginx实现反向代理负载均衡
    查看>>
    nginx实现负载均衡
    查看>>
    nginx常用命令及简单配置
    查看>>
    nginx开机启动脚本
    查看>>
    nginx异常:the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx/conf
    查看>>
    nginx总结及使用Docker创建nginx教程
    查看>>
    nginx报错:the “ssl“ parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/nginx.conf:128
    查看>>
    nginx报错:the “ssl“ parameter requires ngx_http_ssl_module in usrlocalnginxconfnginx.conf128
    查看>>
    nginx日志分割并定期删除
    查看>>
    Nginx日志分析系统---ElasticStack(ELK)工作笔记001
    查看>>
    Nginx映射本地json文件,配置解决浏览器跨域问题,提供前端get请求模拟数据
    查看>>
    nginx最最最详细教程来了
    查看>>
    Nginx服务器---正向代理
    查看>>