Android开发之性能优化

一 . 代码优化

(1)循环优化

 List mlist = userManager.getUserList();
 for(int i = 0;i<mlist.size();i++){

 }

以上的代码会一直去执行mlist.size()方法,可优化为

for(int i=0,p=mlist.size();i<p;i++){

}

(2)尽量在使用时再实例化对象。

NewObject object = new NewObject();
if(i>0){
objectList.add(object);
}

优化为

NewObject object = null;
if(i>0){
object = new NewObject();
objectList.add(object);
}

(3)使用StringBuffer和StringBuilder进行字符串连接

String title = new String("你好,");
title += user.getName();
title += "。现在是星期二";

优化为

StringBuffer title = new StringBuffer("你好,");
title.append(user.getName());
title.append("。现在是星期二");
//转换为字符串:title.toString();

StringBuffer 是线程安全的,速度比StringBuilder要慢。
StringBuilder是线程不安全的,速度比StringBuffer要快。

在Java程序中,StringBuffer的构造器会创建一个默认大小(通常为16)的字符数组。在使用过程中,如果超出这个大小,就会重新分配内存,创建一个更大的数组,并将原先的数组复制过去,再丢弃旧的数组。
当可预知StringBuffer存放字符串的大小时,可以在创建StringBuffer实例时指定大小。
StringBuffer title = new StringBuffer(30); //预知大小为30个字节。

(4)避免使用枚举。
(5)简单的乘除法用移位来实现。

二 . 控件等优化

(1)ListView优化

ListView优化

使用异步加载图片

(2)使用merge/viewstub/include来优化布局

merge/viewstub/include

(3)条件允许下,尽量使用RelativeLayout来代替LinearLayout,主要用来减少视图树的层次。

(4)在android应用中,Drawable和Bitmap都能实现图像加载机制,但建议使用BitmapDrawable来保存图片对象,这样占用更小的内存空间。而使用Bitmap对象,则会占用很大的内存空间。

(5)针对移动设备,最好能使用JSON之类的轻量级数据格式。

(6)android图片的内存优化

InputStream is = this.getResources().openRawResource(R.drawable.pic);
BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = false;
options.inSampleSzie = 10; // width,height设为原来的十分之一
Bitmap bitmap = BitmapFactory.decodeStream(is,null,options);

//使用bitmap完后回收图片资源
if(!bitmap.isRecycle()){
    bitmap.recycle();//回收图片所占的内存
    system.gc();//提醒系统及时回收
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值