常规优化
- 复用View
利用convertview回收视图,效率提高200%。
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
if(convertView == null){
convertView = (LinearLayout)this.layoutInflater.inflate(R.layout.list, null);
}
imageView = (ImageView)convertView.findViewById(R.id.imageView1);
textView = (TextView)convertView.findViewById(R.id.textView1);
imageView.setImageResource(R.drawable.icon);
textView.setText(title[position]);
return convertView;
}
- 使用ViewHolder
利用viewholder模式,效率在提高50%
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ViewHolder holder;
if(convertView == null){
convertView = (LinearLayout)this.layoutInflater.inflate(R.layout.list, null);
holder = new ViewHolder();
holder.tv = (TextView)convertView.findViewById(R.id.textView1);
holder.im = (ImageView)convertView.findViewById(R.id.imageView1);
convertView.setTag(holder);
}else{
holder = (ViewHolder)convertView.getTag();
Log.d("list", "convertView....");
}
holder.im.setImageResource(R.drawable.icon);
holder.tv.setText(title[position]);
return convertView;
}
static class ViewHolder{
TextView tv;
ImageView im;
}
进一步优化
- 如果item中有图片一定要用异步加载。而且里面的图片尽量要用缩略图或者小图。
- 判断手势,快速滑动时不加载里面的图片。
- 要对数据进行分页加载。
- 下拉刷新
- 上滑加载
- item的布局层级要越少越好。
检查性能
hierarchview
Hierarchy Viewer是随Android SDK发布的工具,位于Android SDK/tools/hierarchyviewer.bat (Windows操作系统,mac上显示的为hierarchyviewer),使用起来也是超级简单,通过此工具可以详细的理解当前界面的控件布局以及某个控件的属性(name、id、height等)。
不合理的布局会使我们的应用程序UI性能变慢,HierarchyViewer能够可视化的角度直观地获得UI布局设计结构和各种属性的信息,帮助我们优化布局设计。HierarchyViewer是我们优化程序的工具之一,它是Android自带的非常有用的工具,可以帮助我们更好地检视和设计用户界面(UI),绝对是UI检视的利器。
怎么用它呢?
- 连接设备真机或者模拟器。
- 启动你要观察的应用。
- 打开Hierarchyviewer,点击hierarchyviewer文件即可。
参考复制 非著名程序员