我看到很多关于" Bitmap超过VM预算的问题"错误以及如何在我的应用中防止和使用大量的预防解决方案和代码,但钢铁我在某些设备中遇到了这个错误。
现在我累了,只是想知道我怎么能找出问题发生的时间(可能是" if"条件)以便我可以告诉用户它来自他的手机电话,这样只是防止"强制关闭"错误。
这是我的代码:
public static Bitmap decodeFile(String filePath) {
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeFile(filePath, o);
final int REQUIRED_SIZE = 2048;
int width_tmp = o.outWidth, height_tmp = o.outHeight;
int scale = 1;
while (true) {
if (width_tmp < REQUIRED_SIZE && height_tmp < REQUIRED_SIZE)
break;
width_tmp /= 2;
height_tmp /= 2;
scale *= 2;
}
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
o2.inDither=false;
o2.inPurgeable=true;
o2.inInputShareable=true;
o2.inTempStorage=new byte[32 * 1024];
Bitmap bmp = BitmapFactory.decodeFile(filePath, o2);
return bmp;
}
任何想法都会受到赞赏。
答案 0 :(得分:0)
Google推荐不会绘制比1024x1024像素更大的图像,但我已经找到了下面的解决方案。
Google解决方案:Loading Large Bitmaps Efficiently