Android學習 ——引用圖片導致內存溢出java.lang.OutOfMemoryError

今天遇到這個問題就是從一個輸入流裏調用BitmapFactory.decodeFile(name)得到一個bitmap報的錯。第一次調用都沒問題,第二次再次調用就會報上面那個內存溢出的問題。而且有的手機報有的手機不報。研究了半天終於解決。首先分析了下原因,應該是圖片佔用的內存超過了系統虛擬機可分配的最大限制。不同手機可能分配的最大值不一樣。後來找到解決辦法主要是設置BitmapFactory.Options。


 
 BitmapFactory.Options option = new BitmapFactory.Options();
        option.inSampleSize = 4;
        try {
            Bitmap bmp = BitmapFactory.decodeFile(Path,option);
            holder.icon.setImageBitmap(bmp);
        } catch (OutOfMemoryError err) 
       {}

有的說要加上bitmapOptions.inJustDecodeBounds = true;但是我加上後得到的bitmap就爲null。去掉之後就可以。按照上面的方法就解決問題了。最好把bitmap在不用的時候回收一下:

if (bitmap != null && !bitmap.isRecycled())

                   bitmap.recycle();


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