天天看點

谷歌官方文檔之如何高效展示Bitmap (Google Displaying Bitmaps Efficiently) Displaying Bitmaps Efficiently (高效的展示位圖) Displaying Bitmaps Efficiently (高效的展示位圖)

Displaying Bitmaps Efficiently

(高效的展示位圖)

0.前言

由于本人英語水準有限,非英語專業出身,隻是以一名程式員的心态和有限的知識略微的翻譯了谷歌開發者文檔這一章節。如果翻譯的和各位大神所了解的有出入,還請輕噴。畢竟這是本人的處女座嘛。☺(PS:翻譯的過程當中,中間可能會忽略一些不太重要的部分,畢竟這篇文章是為了幫助Android開發者在應用中更好的使用Bitmap)

1.内容

學習如何使用一般的技術來處理和載入Bitmap對象,在某種程度上可以使你的UI元件保持回應性,并且可以避免應用程式記憶體過多的配置設定。如果你不夠仔細,那麼bitmaps可能會很快就把消耗掉可用的記憶體預算,這樣會直接導緻應用程式崩潰并報出異常:

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

為什麼在Android中加載Bitmaps是很棘手的,這裡有很多原因:

·移動裝置顯然地限制了其系統的資源。對于一個單個的應用程式來說,Android裝置對其配置設定的可用的記憶體可能隻有16MB。Android相容性文檔(CDD)3.7章節 說到 對于多種多樣的尺寸和分辨率虛拟機配置設定了所需要的最小的應用記憶體。應用程式應該充分的利用這有限的記憶體。然而,請記住許多裝置有更高的限制。

  • Bitmaps消耗很多記憶體,尤其是圖像,類似于照片。例如,Galaxy Nexus手機上的照相機,拍攝一張照片高達2592*1936像素。如果Bitmap的配置是ARGB_8888(Android 2.3之前預設),然後載入這個圖像到記憶體中大約消耗19MB的記憶體(2592*1936*4bytes)會立即消耗一些裝置上的每個應用的最大限制。
  • Android 應用 UI的頻繁使用需要一些Bimaps一次性的載入。類似ListView,GridView和ViewPager,一般在多次滑動螢幕的時候就要一次性引用了大量的Bitmaps。
1.1 高效的載入Bitmaps
1.2 在UI線程處理Bitmaps
1.3 緩存Bitmaps
1.4 管理Bitmaps記憶體
1.5 在UI中展示Bitmaps