现在的位置: 首页 > 综合 > 正文

java.lang.OutOfMemoryError: bitmap size exceeds VM budget解决办法

2013年09月01日 ⁄ 综合 ⁄ 共 727字 ⁄ 字号 评论关闭

bitmap内存不足的解决办法,解决了我现在的问题。

 

原文:http://www.norkoo.com/show/Mobile_Technology/android/ececkhjijkaifjkigceckefhekdfjg.aspx

 

android系统中读取位图Bitmap时.分给虚拟机中图片的堆栈大小只有8M。所以不管是如何调用的图片,太多太大虚拟机肯定会报那个错误。超出图片内存预算那个错误.:java.lang.OutOfMemoryError: bitmap size exceeds VM budget

遇到这个问题是因为没有回收资源.

1
public


void


distoryBitmap(){
2
    
if


(
null


!=bmb&&!bmb.isRecycled())
3
        
bmb.recycle();
4
}

 

调用上面的代码可以基本解决这个问题.但是千万不要在view中的onDraw()中调用.因为onDraw()方法是系统循环调用.只要图片打开.

系统就不停的调用该方法.

最好的解决方案是在自定义的View中添加一个init()初始化方法的头部调用.或者在构造函数的顶部调用:

1
public


class


GifView
extends


View
implements


Runnable {
2
    
private


Bitmap bmb;
3
 
 
4
    
public


GifView(Context context, InputStream inputStream) {
5
        
super


(context);
6
        
distoryBitmap();
7
        
bmb = BitmapFactory.decodeStream(is);
8
    
}
9
}

抱歉!评论已关闭.