Android高效顯示Bitmap

2018-08-02 17:34 更新

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

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

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

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

參考資料

章節(jié)課程

  • 非UI線程處理Bitmap(Processing Bitmaps Off the UI Thread)

    處理Bitmap(裁剪,下載等操作)不能執(zhí)行在主線程。這節(jié)課會帶領(lǐng)你學(xué)習(xí)如何使用AsyncTask在后臺線程對Bitmap進(jìn)行處理,并解釋如何處理并發(fā)帶來的問題。

  • 緩存Bitmaps(Caching Bitmaps)

    這節(jié)課會帶領(lǐng)你學(xué)習(xí)如何使用內(nèi)存與磁盤緩存來提升加載多張Bitmaps時的響應(yīng)速度與流暢度。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號