当我尝试使用 BitmapFactory 进行图像解码时,它一直导致 GC_FOR_ALLOC,然后应用程序崩溃 OutOfMemory。
有什么修复它的建议吗?我需要为一个有很多图像的 GridView 解决这个问题(381 个图像,每个 90k)。
我来自 AsyncTask 的代码:
@Override
protected Bitmap doInBackground(Integer... params) {
data = params[0];
final Bitmap bitmap = decodeSampledBitmapFromResource(
context.getResources(), data, 100, 100);
addBitmapToMemoryCache(String.valueOf(params[0]), bitmap);
return bitmap;
}
还有我的 decodeSampledBitmapFromResource 方法:
public static Bitmap decodeSampledBitmapFromResource(Resources res,
int resId, int reqWidth, int reqHeight) {
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeResource(res, resId, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth,
reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
return BitmapFactory.decodeResource(res, resId, options);
}