转载自 :"http://blog.csdn.net/arui319/article/details/7953690"
看了"Android开发优化之——对Bitmap的内存优化”后总结一下防止忘了
1) 要及时回收Bitmap的内存
//首先判断bitmap是否回收if(bitmap != null && !bitmap.isRecycled()){
// 回收并且置为null
bitmap.recycle();
bitmap = null;
}
2) 捕获异常
Bitmap bitmap = null;
try {// 实例化Bitmap
bitmap = BitmapFactory.decodeFile(path);
} catch (OutOfMemoryError e) {
//
}
if (bitmap == null) {
// 如果实例化失败 返回默认的Bitmap对象
return defaultBitmapMap;
}
如果不进行缓存,尽管看到的是同一张图片文件,但是使用BitmapFactory类的方法来实例化出来的Bitmap,是不同的Bitmap对象。缓存可以避免新建多个Bitmap对象,避免内存的浪费。
4) 压缩图片
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inSampleSize = 2;//宽高都变成原先的一半
Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.ic_launcher,opts);
BitmapFactory.Options opts = new BitmapFactory.Options();
opts.inJustDecodeBounds = true;// 设置inJustDecodeBounds为true
BitmapFactory.decodeFile(path, opts);// 使用decodeFile方法得到图片的宽和高
int width = opts.outWidth;
int height = opts.outHeight;