您的位置:首页 > 编程语言 > Java开发

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

2011-05-18 16:43 627 查看
bitmap内存不足的解决办法,解决了我现在的问题。

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

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

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

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

Bitmapbmb;


3



4


public

GifView(Contextcontext,InputStreaminputStream){


5


super

(context);


6


distoryBitmap();


7


bmb=BitmapFactory.decodeStream(is);


8


}


9

}

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