高效顯示Bitmap

編寫:kesenhoo - 原文:http://developer.android.com/training/displaying-bitmaps/index.html

這一章節會介紹一些處理與加載Bitmap對象的常用方法,這些技術能夠使得程序的UI不會被阻塞,並且可以避免程序超出內存限制。如果我們不注意這些,Bitmaps會迅速的消耗掉可用內存從而導致程序崩潰,出現下面的異常:java.lang.OutofMemoryError: bitmap size exceeds VM budget.

在Android應用中加載Bitmaps的操作是需要特別小心處理的,有下面幾個方面的原因:

  • 移動設備的系統資源有限。Android設備對於單個程序至少需要16MB的內存。Android Compatibility Definition Document (CDD), Section 3.7. Virtual Machine Compatibility 中給出了對於不同大小與密度的屏幕的最低內存需求。 應用應該在這個最低內存限制下去優化程序的效率。當然,大多數設備的都有更高的限制需求。
  • Bitmap會消耗很多內存,特別是對於類似照片等內容更加豐富的圖片。 例如,Galaxy Nexus的照相機能夠拍攝2592x1936 pixels (5 MB)的圖片。 如果bitmap的圖像配置是使用ARGB_8888 (從Android 2.3開始的默認配置) ,那麼加載這張照片到內存大約需要19MB(2592*1936*4 bytes) 的空間,從而迅速消耗掉該應用的剩餘內存空間。
  • Android應用的UI通常會在一次操作中立即加載許多張bitmaps。 例如在ListView, GridViewViewPager 等控件中通常會需要一次加載許多張bitmaps,而且需要預先加載一些沒有在屏幕上顯示的內容,為用戶滑動的顯示做準備。

參考資料

章節課程


书籍推荐