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())
|
調用上面的代碼可以基本解決這個問題.但是千萬不要在view中的onDraw()中調用.因爲onDraw()方法是系統循環調用.只要圖片打開.
系統就不停的調用該方法.
最好的解決方案是在自定義的View中添加一個init()初始化方法的頭部調用.或者在構造函數的頂部調用:
1
|
public
class
GifView
extends
View
implements
Runnable {
|
4
|
public
GifView(Context context, InputStream inputStream) {
|
7
|
bmb = BitmapFactory.decodeStream(is);
|