java.lang.OutOfMemoryError: bitmap size exceeds VM budget解決辦法

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 }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章