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