Displaying Bitmaps Efficiently (一)

高效地顯示圖片

——Android官網原文翻譯

譯者:我在一個剛剛組建的Android項目組, OutOfMemory困擾了我好久,偶然在Stack Overflow看到有人推薦,閱讀了這篇文章。此文技術並不算高端,並且目前已經有一些開源組件能夠解決這種問題,但本文從原理出發全面地講述了相似問題應該怎樣處理,使我獲得了很多啓示。本人水平有限,翻譯過程當中也是一直在查單詞,翻譯不到位的地方還請見諒。html

 

學習怎樣處理在Android中加載圖片不只能夠幫助您建立響應式的UI,並且能夠避免超出應用程序的內存限制,從而避免致使OutOfMemory的異常。若是不夠謹慎的話,加載Bitmap對象會很快的消耗掉應用程序的可用內存,致使程序崩潰:java.lang.OutofMemoryError: bitmap size exceeds VM budget.java

1因爲以下這些緣由,在Android程序中加載圖片須要很是謹慎

1.移動設備一般擁有頗有限的系統資源。Android設備的每個應用程序能夠獲得最少16MB的可用內存。安卓兼容性解釋文檔Android Compatibility Definition Document (CDD)3.7節:虛擬機兼容性根據屏幕尺寸和分辨率爲應用程序提供了不一樣的最小可用內存。應用程序應該被儘可能充分地利用,保證不超過最小內存的限制。須要注意的是,許多設備被設置了更大的內存限制。 android

2.Bitamp對象會佔用不少的內存,尤爲是對具備豐富圖片或者照片的應用來講,內存消耗尤其嚴重。舉例來講,Galaxy Nexus的照相機(500萬像素)最大能夠照出來一張2592x1936像素的照片,若是這張照片的色彩模式使用ARGB_8888 (Android2.3之後默認使用該模式),那麼加載這張照片會佔用約19MB的內存空間,在某些設備上,這樣作會馬上耗光可用的內存資源。 api

3.安卓應用程序一般會在同一時刻頻繁地請求若干張圖片。像ListView,GridView和ViewPager這些組件,通常都會在屏幕上同時顯示幾張圖片,在屏幕顯示不到的地方還會有些圖片等待着顯示。 緩存

2如下課程將按部就班的講述在Android環境下怎樣快速安全的加載圖片

高效的加載圖片:講述怎樣保證不超出應用程序內存限制而加載很大的圖片。安全

在UI線程之外處理圖片:圖片操做(從新設置尺寸,從遠程下載等等)永遠不要佔用UI線程。這裏介紹怎樣在後臺線程使用AsyncTask處理圖片,而且解釋怎樣處理併發問題。併發

緩存圖片:這一節講述怎樣使用內存和外存緩存圖片,在加載衆多圖片時提高UI的響應程度和流動性。性能

管理圖片內存:這節闡述怎樣管理圖片內存來使應用程序的性能達到最佳。學習

在UI中顯示圖片:這一節將前文綜合起來,向您展現,怎樣使用後臺線程和圖片緩存把圖片加載到像ViewPager或者GridView這種組件中。google

 

點擊這裏下載示例源碼

原文連接

相關文章
相關標籤/搜索