我正在使用以下方法将位图的大小从任何原始大小减小到 200dp X 200dp。这应该是为了防止由于我没有减小位图的大小而发生的内存不足问题而导致的崩溃。然而,即使在使用 BitmapFactory.opitons 来减小位图的大小之后,我仍然会遇到内存不足的问题。
有人建议我使用 bitmap.recycle(); 我以前从未使用过这个,我有点困惑,因为位置 logcat 告诉我内存不足正在发生。
logcat 在此处返回位图的方法的返回语句中告诉我图像缩小方法中发生了内存问题:
return BitmapFactory.decodeFile(fileName, options);
那么在这段代码中我会在哪里调用 bitmap.recycle() 呢?
这是整个方法的代码:
public static Bitmap decodeSampledBitmapFromResource(String fileName, int reqWidth, int reqHeight) {
// First decode with inJustDecodeBounds=true to check dimensions
final BitmapFactory.Options options = new BitmapFactory.Options();
options.inJustDecodeBounds = true;
BitmapFactory.decodeFile(fileName, options);
// Calculate inSampleSize
options.inSampleSize = calculateInSampleSize(options, reqWidth, reqHeight);
// Decode bitmap with inSampleSize set
options.inJustDecodeBounds = false;
// logCat says running out of memory here on the return statement
return BitmapFactory.decodeFile(fileName, options);
}