Android學習 ——引用圖片導致記憶體溢出java.lang.OutOfMemoryError

來源:互聯網
上載者:User

標籤:android

今天遇到這個問題就是從一個輸入資料流裡調用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();


Android學習 ——引用圖片導致記憶體溢出java.lang.OutOfMemoryError

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.