高效地顯示圖片——Android官網原文翻譯
譯者:我在一個剛剛組建的Android項目組, OutOfMemory困擾了我很久,偶然在Stack Overflow看到有人推薦,閱讀了這篇文章。此文技術並不算高端,而且目前已經有一些開源組件可以解決這種問題,但本文從原理出發全面地講述了類似問題應該怎樣處理,使我得到了不少啟示。本人水平有限,翻譯過程中也是一直在查單詞,翻譯不到位的地方還請見諒。
學習怎樣處理在Android中載入圖片不僅可以協助您建立響應式的UI,而且可以避免超出應用程式的記憶體限制,從而避免導致OutOfMemory的異常。如果不夠謹慎的話,載入Bitmap對象會很快的消耗掉應用程式的可用記憶體,導致程式崩潰:java.lang.OutofMemoryError: bitmap size exceeds VM budget.
1由於如下這些原因,在Android程式中載入圖片需要非常謹慎
1.行動裝置通常擁有很有限的系統資源。Android裝置的每一個應用程式可以得到最少16MB的可用記憶體。安卓相容性解釋文檔Android Compatibility Definition Document
2.Bitamp對象會佔用很多的記憶體,尤其是對具有豐富圖片或者照片的應用來說,記憶體消耗尤為嚴重。舉例來說,Galaxy Nexus的照相機(500萬像素)最大可以照出來一張
2以下課程將循序漸進的講述在Android環境下怎樣快速安全的載入圖片
高效的載入圖片:講述怎樣保證不超出應用程式記憶體限制而載入很大的圖片。
在UI線程以外處理圖片:圖片操作(重新設定尺寸,從遠程下載等等)永遠不要佔用UI線程。這裡介紹怎樣在後台線程使用AsyncTask處理圖片,並且解釋怎樣處理並發問題。
緩衝圖片:這一節講述怎樣使用記憶體和外存緩衝圖片,在載入眾多圖片時提升UI的響應程度和流動性。
管理圖片記憶體:這節闡述怎樣管理圖片記憶體來使應用程式的效能達到最佳。
在UI中顯示圖片:這一節將前文綜合起來,向您展示,怎樣使用後台線程和圖片緩衝把圖片載入到像ViewPager或者GridView這種組件中。
點擊這裡下載樣本源碼
原文連結