android 图片内存溢出问题解决与优化
android 4.0 內存使用管理
final int memClass = ((ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass();
final int cacheSize = 1024 * 1024 * memClass / 8;
imageCache = new LruCache<Integer, Bitmap>(cacheSize)
{
@Override
protected int sizeOf(Integer key, Bitmap value)
{
return value.getRowBytes() * value.getHeight();
}
}
這個內存管理的效果很好。
在獲取圖片的時候也使用
/**
* 以省記憶體的方式讀取本地資源的圖片
*
*/
public static Bitmap readBitmap(Context context, int resId){
BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inPreferredConfig = Bitmap.Config.RGB_565;
opt.inPurgeable = true;
opt.inInputShareable = true;
InputStream is = context.getResources().openRawResource(resId);
Bitmap bm = BitmapFactory.decodeStream(is, null, opt);
SoftReference<Bitmap> softBitmap = new SoftReference<Bitmap>(bm);
return softBitmap.get();
}
很大程度上減少內存溢出問題