博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ListView优化
阅读量:6112 次
发布时间:2019-06-21

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

hot3.png

ListView优化问题:

 在adapter而中进行优化, adapter中:getCount列表长度,getView设置每一列 View / ViewGroup(循环直到完成) ,   判断 convertView  ==   null
  if  (convertView  ==   null ) {

                convertView = mInflater.inflate(R.layout.list_item_icon_text,

                        null);
}

使用静态内部类 ViewHolder 
  if  (convertView  ==   null ) {-----------------> 重用view,这样减少内存消耗,同时加快item加载速度
                convertView  =  mInflater.inflate(R.layout.list_item_text,
                         null );
                holder  =   new  ViewHolder();
              
                holder.text  =  (TextView) convertView.findViewById(R.id.text);-----> findViewById会临时消耗更多的内存
                convertView.setTag(holder);  ---->这置setTag会占用更多内存
            }
             else {
                holder  =  (ViewHolder)convertView.getTag();---> 不用每次都要findViewById了,减少了性能的消耗。同时重用了convertView,很大程度上的减少了内存的消耗
            }

static   class  ViewHolder {----------------> 静态类只会在第一次加载时会耗费比较长时间,但是后面就可以很好帮助加载,同时保证了内存中只有一个ViewHolder,节省了内存的开销
        TextView text;
      
    }
最大的问题还是图片处理,listview中显示图片,option保存图片大小,不将图片加载到内存,图片要进行压缩,使用弱引用(weakReference)储存图片信息(不是图片),获取图片,及时回收图片释放内存(dapater中尽量不使用线程,避免产生内存泄露问题(线程生命周期不可控))

转载于:https://my.oschina.net/u/579305/blog/760705

你可能感兴趣的文章
(转)HTML的代码(从朋友那转的,看着觉得会有用就转了)
查看>>
eclipse中将一个项目作为library导入另一个项目中
查看>>
Go语言学习(五)----- 数组
查看>>
Android源码学习之观察者模式应用
查看>>
Content Provider的权限
查看>>
416. Partition Equal Subset Sum
查看>>
centos7.0 64位系统安装 nginx
查看>>
数据库运维平台~自动化上线审核需求
查看>>
注解开发
查看>>
如何用 Robotframework 来编写优秀的测试用例
查看>>
Django之FBV与CBV
查看>>
Vue之项目搭建
查看>>
app内部H5测试点总结
查看>>
Docker - 创建支持SSH服务的容器镜像
查看>>
[TC13761]Mutalisk
查看>>
三级菜单
查看>>
Data Wrangling文摘:Non-tidy-data
查看>>
加解密算法、消息摘要、消息认证技术、数字签名与公钥证书
查看>>
while()
查看>>
常用限制input的方法
查看>>