码迷,mamicode.com
首页 > 其他好文 > 详细

Bitmap OutOfMemoryError

时间:2017-08-06 19:37:26      阅读:129      评论:0      收藏:0      [点我收藏+]

标签:post   对象   recycled   ons   报错   nbsp   sources   方法   sre   

在创建Bitmap的时候因为对象过多而没有即使回收,导致的内存不足:

java.lang.OutOfMemoryError
E/AndroidRuntime(21898):     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
E/AndroidRuntime(21898):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:500)
E/AndroidRuntime(21898):     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:353)
E/AndroidRuntime(21898):     at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:376)
E/AndroidRuntime(21898):     at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:406)


解决的方法:

方法一:减小图片大小

BitmapFactory.Options opts = new BitmapFactory.Options(); 

opts.inSampleSize = n; 

bitmap = BitmapFactory.decodeStream(fis, null, opts);

opts.inSampleSize的默认值是0 ,设置其值能够压缩图片以减小OOM几率,这样的方法能够缓解问题可是不能彻底解决这个问题,当某时bitmap对象超过阀值时还是回报错。


方法二:及时回收bitmap内存:

if(bitmap != null && !bitmap.isRecycled()){  
        bitmap.recycle();  
        bitmap = null;  
}  
System.gc();  


bitmap.recycle()方法用于回收该bitmap所占用的内存。接着将bitmap置空,最后,用System.gc()调用一下系统的垃圾回收器。


方法三: 自然是优化代码结构

好的代码结构和代码风格是程序猿毕生追求...!



Bitmap OutOfMemoryError

标签:post   对象   recycled   ons   报错   nbsp   sources   方法   sre   

原文地址:http://www.cnblogs.com/jhcelue/p/7295503.html

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