注:本文翻譯自Google官方的Android Developers Training文檔,譯者技術一般,由于喜愛安卓而產生了翻譯的念頭,純屬個人興趣愛好。
原文鏈接: http://developer.android.com/training/displaying-bitmaps/index.html
學習如何使用常規的技術來加載和處理的
Bitmap
對象,可以讓你的UI組件保持響應并避免超過了你的應用的記憶限制。如果你不足夠小心,位圖資源會迅速消耗你的可用存儲。最終導致應用崩潰,并拋出錯誤:
java.lang.OutofMemoryError: bitmap size exceeds VM budget
。
有下面一些原因解釋為什么在你的Android應用中加載位圖會比較復雜:
- 移動終端通常都只有有限的系統資源。Android設備中的每個應用只能擁有16MB的存儲空間。在 Android Compatibility Definition Document 的第3.7節:《Virtual Machine Compatibility》中給出了不同屏幕尺寸和密度所需要的最小應用存儲空間。應用必須在該存儲限制下將性能表現盡可能的優化。不過,記住許多設備都會給每個應用分配高于該限制的內存空間。
- 位圖會消耗大量的內存,尤其是內容豐富的圖片,如照片。例如, Galaxy Nexus 的相機所拍攝的照片擁有 2592x1936數量的像素(500萬像素)。如果位圖的設置使用的是 ARGB_8888 (Android 2.3之后的默認配置),那么加載這個圖像就需要消耗19MB的內存( 2592*1936*4字節 ),這會迅速消耗在一些設備上每個應用的內存限制。
- Android應用的UI經常會要求一次性加載多個位圖。一些組件諸如: ListView , GridView 和 ViewPager 通常在屏幕上會一次性包含多個位圖,并后很多未顯示在屏幕上的位圖緩存,它們會隨著用戶手指的操作而隨時出現。
課程:
【Android Developers Training】 56. 更效率地加載大圖片
【Android Developers Training】 57. 在UI線程之外處理圖像
【Android Developers Training】 58. 緩存位圖
【Android Developers Training】 59. 管理圖片存儲
【Android Developers Training】 60. 在你的UI中顯示位圖
代碼樣例:
視頻(On YouTube):
DevBytes: Making Apps Beautiful - Part 4 - Performance Tuning
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
