如何找出Bitmap何时超出VM预算?

时间:2014-05-07 17:08:09

标签: java android bitmap

我看到很多关于" 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;


}

任何想法都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

Google推荐不会绘制比1024x1024像素更大的图像,但我已经找到了下面的解决方案。

Google解决方案:Loading Large Bitmaps Efficiently

硬编码解决方案:https://stackoverflow.com/a/8067351/575643