位图和内存不足错误

时间:2015-03-09 20:04:22

标签: android

我正在尝试在sdcard上的应用程序文件夹中保存许多位图。但是我的内存出错了。在这种情况下处理位图和内存的最佳方法是什么。我还会在哪里调用bitmap.recycle()查看下面的代码?感谢

以下是我在sdcard上保存位图的代码

Bitmap b1 = BitmapFactory.decodeResource(getResources(), R.drawable.sky);

    ByteArrayOutputStream bStream1 = new ByteArrayOutputStream();
    b1.compress(Bitmap.CompressFormat.PNG, 100, bStream1);


    File file= new File(Environment.getExternalStorageDirectory() + File.separator + "AppName" + "/image1.png");
    if(!file.exists()) {
        try {

            file.createNewFile();
            FileOutputStream fos = new FileOutputStream(file);
            fos.write(bStream1.toByteArray());
            fos.close();

        } catch (IOException e) {
            e.printStackTrace();
        }
    }

1 个答案:

答案 0 :(得分:0)

我认为使用bitmap.recycle()并保持代码不错,您应该将if(!file.exists())移到try语句中,然后在finally中回收您的位图

try {
    if(!file.exists()) {
            file.createNewFile();
            FileOutputStream fos = new FileOutputStream(file);
            fos.write(bStream1.toByteArray());
            fos.close();
    }
} catch (IOException e) {
    e.printStackTrace();
} finally {
    b1.recycle()
}

像这样。