我目前正在开发类似应用的杂志。由于有一个放大选项(原始来源的150%,200%,250%),我宁愿不缩小图像。但是,当我尝试解码图像时,应用程序将强制重新启动,因为内存不足。有什么建议可以解决这个问题吗?
图像是本地的(SD卡),可以在任何方法中检索,但最终需要是一个位图,因为我使用像cavans.drawbitmap这样的东西来显示它。我试过,输入流 - >字节,输入流 - >位图等...但是有没有最有效的方法或至少 我可以肯定应用程序不强制重启/关闭?感谢
try {
InputStream is = (InputStream) new URL(url).getContent();
try {
return BitmapFactory.decodeStream(is);
} finally {
is.close();
}
} catch (Exception e) {
return BitmapFactory.decodeResource(context.getResources(), defaultDrawable);
}
答案 0 :(得分:1)
你应该考虑使用nostra's image loader,它可以非常有效地处理内存,你可以指定很多配置文件,即时使用它,以及它对大图像的工作效果还不错
答案 1 :(得分:1)
这就是smartImageView(通过loopj - 你可以在http://loopj.com/上找到他)用来从驱动器/ sd中检索文件。
private Bitmap getBitmapFromDisk(String imgID) {
Bitmap bitmap = null;
if(diskCacheEnabled){
String filePath = getFilePath(imgID);
File file = new File(filePath);
if(file.exists()) {
bitmap = BitmapFactory.decodeFile(filePath);
}
}
return bitmap;
}