Android加載大量圖片內存溢出解決辦法


   當我們在做項目過程中,一遇到顯示圖片時,就要考慮圖片的大小,所占內存的大小,原因就是Android分配給Bitmap的大小只有8M,試想想我們用手機拍照,普通的一張照片不也得1M以上,所以android處理圖片時不得不考慮圖片過大造成的內存異常。

 

方法一:

在從網絡或本地加載圖片的時候,只加載縮略圖。

 

這個方法的確能夠少占用不少內存,可是它的致命的缺點就是,因為加載的是縮略圖,所以圖片失真比較嚴重,對於對圖片質量要求很高的應用,可以采用下面的方法。

 

 

方法二:

運用JAVA的軟引用,進行圖片緩存,將經常需要加載的圖片,存放在緩存里,避免反復加載。

 

 

方法三:

及時銷毀不再使用的Bitmap對象。

 

if (bitmap != null && b!itmap.isRecycled()){

 

bitmap.recycle();

 

bitmap = null; // recycle()是個比較漫長的過程,設為null,然后在最后調用System.gc(),效果能好很多

 

}

 

System.gc();

 

方案四:

讀取圖片時注意方法的調用,適當壓縮  

盡量不要使用setImageBitmapsetImageResourceBitmapFactory.decodeResource來設置一張大圖,因為這些函數在完成decode后,最終都是通過java層的createBitmap來完成的,需要消耗更多內存。 因此,改用先通過BitmapFactory.decodeStream方法,創建出一個bitmap,再將其設為ImageView的  source,decodeStream最大的秘密在於其直接調用JNI>>nativeDecodeAsset()來完成decode,無需再使用java層的createBitmap,從而節省了java層的空間

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM