ListView优化

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中尽量不使用线程,避免产生内存泄露问题(线程生命周期不可控))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值