您的位置:首页 > 移动开发 > Android开发

Android学习 ——引用图片导致内存溢出java.lang.OutOfMemoryError

2015-03-27 20:18 399 查看
今天遇到这个问题就是从一个输入流里调用BitmapFactory.decodeFile(name)得到一个bitmap报的错。第一次调用都没问题,第二次再次调用就会报上面那个内存溢出的问题。而且有的手机报有的手机不报。研究了半天终于解决。首先分析了下原因,应该是图片占用的内存超过了系统虚拟机可分配的最大限制。不同手机可能分配的最大值不一样。后来找到解决办法主要是设置BitmapFactory.Options。

BitmapFactory.Options option = new BitmapFactory.Options();
option.inSampleSize = 4;
try {
Bitmap bmp = BitmapFactory.decodeFile(Path,option);
holder.icon.setImageBitmap(bmp);
} catch (OutOfMemoryError err)
{}


有的说要加上bitmapOptions.inJustDecodeBounds = true;但是我加上后得到的bitmap就为null。去掉之后就可以。按照上面的方法就解决问题了。最好把bitmap在不用的时候回收一下:
if (bitmap != null && !bitmap.isRecycled())

bitmap.recycle();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐