【Google官方教程】前言:高效的Bitmap顯示

聲明:Ryan的博客文章歡迎您的轉載,但在轉載的同時,請註明文章的來源出處,不勝感激! :-)  html

http://my.oschina.net/ryanhoo/blog/88153
java

譯者:Ryan Hoo android

來源:https://developer.android.com/develop/index.html
緩存

譯者按: 在Google最新的文檔中,提供了一系列含金量至關高的教程。由於種種緣由而不爲人知,真是惋惜!Ryan將會細心整理,將之翻譯成中文,但願對開發者有所幫助。 併發

        本系列是Google關於展現大Bitmap(位圖)的官方演示,能夠有效的解決內存限制,更加有效的加載並顯示圖片,同時避免讓人頭疼的OOM(Out Of Memory)。
性能

------------------------------------------------------------------------------------- 學習

譯文: 優化

        這一系列教程覆蓋了一些用於處理和加載Bitmap(位圖)對象的經常使用技術,在某種程度上,使用這些技術可使你的用戶接口(UI)組件保持良好的響應性能,而且避免超出程序內存限制。若是你不當心翼翼,這些位圖對象能夠迅速消耗你的可用內存,並引發嚴重的錯誤而致使程序崩潰: spa

            java.lang.OutofMemoryError: bitmap size exceeds VM budget. .net

          這裏有一堆的緣由向你解釋爲何在Android應用中加載Bitmap會如此棘手:

             · 移動設備通常只有有限的系統資源。Android設備爲單個應用分配的可用內存僅爲16M。在Android兼容性說明文檔(Android Compatibility Definition Document(CDD))的3.7章————虛擬設備的兼容性中,給出了不一樣屏幕尺寸和密度的手機所須要的最小內存。在有着最小內存限制條件下,應用應該對性能進行優化處理。可是請記住,不少設備的配置要高於這個限制。

             · Bitmap(位圖)尤爲是一些像照片這種豐富的圖片,須要佔用大量的內存。例如,Galaxy Nexus攝像頭拍攝的照片爲2592*1936px(5百萬像素)。若是使用ARGB_8888(Android2.3以前的默認配置)加載該位圖,須要佔用19M的內存(2592*1936*4),立馬將一些設備的單個應用內存消耗一空。

            · Android應用的UI常常須要一次加載不少圖片。像ListViewGridViewViewPager這種組件一般包含許多在屏幕上顯示的位圖,而且還有不少潛藏在屏幕以外的圖片,準備在屏幕滑動的時候顯示出來。

    要解決這些問題,你須要學習以下課程:

-------------------------------------------------------------------------------------

第一課:高效地加載大Bitmap

        這節課將帶你貫穿各類以不超過應用的內存限制的方式解碼大Bitmap。

第二課:在非UI線程中處理Bitmap

        Bitmap處理(改變圖片尺寸,遠程下載等等)不該該在UI線程中進行。這節課將帶你學習使用AsyncTask在後臺線程進行圖片處理而且闡述如何處理併發問題。

第三課:緩存Bitmap

    這節課將教會你使用內存和硬盤兩種方式緩存Bitmap來提高在加載多個Bitmap時UI的響應性和流暢性。

第四課:在你的UI中顯示Bitmap

這節課將全部東西綜合起來,向你展現如何使用後臺線程和Bitmap緩存,加載多個Bitmap到ViewPager和GridView這樣的組件中去。

相關文章
相關標籤/搜索