歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

【Google官方教程】前言:高效地顯示Bitmap(位圖)

譯者按: 在Google最新的文檔中,提供了一系列含金量相當高的教程。因為種種原因而鮮為人知,真是可惜!Ryan將會細心整理,將之翻譯成中文,希望對開發者有所幫助。

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

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

譯文:

這一系列教程覆蓋了一些用於處理和加載Bitmap(位圖)對象的常用技術,在某種程度上,使用這些技術可以使你的用戶接口(UI)組件保持良好的響應性能,並且避免超出程序內存限制。如果你不小心翼翼,這些位圖對象可以迅速消耗你的可用內存,並引起嚴重的錯誤而導致程序崩潰:java.lang.OutofMemoryError: bitmap size exceeds VM budget.

這裡有一堆的原因向你解釋為什麼在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經常需要一次加載很多圖片。像ListView、GridView和ViewPager這種組件通常包含許多在屏幕上顯示的位圖,並且還有很多潛藏在屏幕之外的圖片,准備在屏幕滑動的時候顯示出來。

要解決這些問題,你需要學習如下課程:

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

第一課:高效地加載大Bitmap

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

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

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

緩存Bitmap

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

在你的UI中顯示Bitmap

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

【Google官方教程】系列相關閱讀: http://www.linuxidc.com/search.aspx?where=nkey&keyword=14914

Copyright © Linux教程網 All Rights Reserved