1. 程式人生 > >高效顯示Bitmap

高效顯示Bitmap

def androi targe device source 避免 需要 滑動 exc

這一章節會介紹一些處理與加載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, GridView 與 ViewPager 等控件中通常會需要一次加載許多張bitmaps,而且需要預先加載一些沒有在屏幕上顯示的內容,為用戶滑動的顯示做準備。

高效顯示Bitmap