码迷,mamicode.com
首页 > 移动开发 > 详细

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

时间:2015-03-28 06:34:55      阅读:133      评论:0      收藏:0      [点我收藏+]

标签:android

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


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

标签:android

原文地址:http://xiaocool.blog.51cto.com/1593956/1625809

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!