Android 效能優化:手把手教你優化Bitmap圖片資源的使用
前言
- 在 Android開發中,效能優化策略十分重要
- 本文主要講解效能優化中的Bitmap 使用優化,希望你們會喜歡
目錄

1.png
1. 優化原因
即 為什麼要優化圖片Bitmap資源,具體如下圖:

1.png
2. 優化方向
本文將從 以下方面優化圖片Bitmap資源的使用 & 記憶體管理

1.png
3. 具體優化方案
下面,我將詳細講解每個優化方向的具體優化方案

1.png
3.1 使用完畢後 釋放圖片資源
- 優化原因
使用完畢後若不釋放圖片資源,容易造成記憶體洩露,從而導致記憶體溢位 - 優化方案
a. 在 Android2.3.3(API 10)前,呼叫 Bitmap.recycle()方法
b. 在 Android2.3.3(API 10)後,採用軟引用(SoftReference) -
具體描述
在 Android2.3.3(API 10)前、後,Bitmap物件 & 其畫素資料 的儲存位置不同,從而導致釋放圖片資源的方式不同,具體如下圖
1.png
注:若呼叫了Bitmap.recycle()後,再繪製Bitmap,則會出現Canvas: trying to use a recycled bitmap錯誤
3.2 根據解析度適配 & 縮放圖片
-
優化原因
若 Bitmap 與 當前裝置的解析度不匹配,則會拉伸Bitmap,而Bitmap解析度增加後,所佔用的記憶體也會相應增加
因為Bitmap 的記憶體佔用 根據 x、y的大小來增加的
-
優化方案
1.png
3.3 按需 選擇合適的解碼方式
-
優化原因
不同的圖片解碼方式 對應的 記憶體佔用大小 相差很大,具體如下
1.png
- 優化方案
根據需求 選擇合適的解碼方式
使用引數:BitmapFactory.inPreferredConfig 設定
預設使用解碼方式:ARGB_8888
3.4 設定 圖片快取
-
優化原因
重複載入圖片資源耗費太多資源(CPU、記憶體 & 流量)
-
優化方案
1.png
關於三級快取機制,此處不作過多描述,具體請看文章:三級快取說明
至此,關於圖片資源Bitmap的使用優化講解完畢
4. 總結
-
本文全面總結了圖片資源Bitmap的使用優化,具體如下圖
1.png