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

今天遇到这个问题就是从一个输入流里调用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();


郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。