我正在尝试在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();
}
}
答案 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()
}
像这样。