如何進行Bitmap資源最佳化?手把手教你!

yilian發表於2020-02-12

前言

在 Android開發中,效能最佳化策略十分重要。本文主要講解 效能最佳化中的Bitmap使用最佳化,希望你們會喜歡。


目錄

如何進行Bitmap資源最佳化?手把手教你!

1. 最佳化原因

即 為什麼要最佳化圖片Bitmap資源,具體如下圖:

如何進行Bitmap資源最佳化?手把手教你!

2. 最佳化方向

本文將從 以下方面最佳化圖片Bitmap資源的使用 & 記憶體管理:

如何進行Bitmap資源最佳化?手把手教你!

3. 具體最佳化方案

下面,我將詳細講解每個最佳化方向的具體最佳化方案

如何進行Bitmap資源最佳化?手把手教你!

下面,我將詳細講解上述各個方案。

3.1 使用完畢後 釋放圖片資源

最佳化原因:使用完畢後若不釋放圖片資源,容易造成記憶體洩露,從而導致記憶體溢位

最佳化方案:

a. 在 Android2.3.3(API 10)前,呼叫 Bitmap.recycle()方法

b. 在 Android2.3.3(API 10)後,採用軟引用(SoftReference)

具體描述:在 Android2.3.3(API 10)前、後,Bitmap物件 & 其畫素資料 的儲存位置不同,從而導致釋放圖片資源的方式不同,具體如下圖:

如何進行Bitmap資源最佳化?手把手教你!

注:若呼叫了Bitmap.recycle()後,再繪製Bitmap,則會出現Canvas: trying to use a recycled bitmap錯誤。

3.2 根據解析度適配 & 縮放圖片

最佳化原因:若 Bitmap 與 當前裝置的解析度不匹配,則會拉伸Bitmap,而Bitmap解析度增加後,所佔用的記憶體也會相應增加,主要因為Bitmap 的記憶體佔用 根據 x、y的大小來增加的。

最佳化方案:

如何進行Bitmap資源最佳化?手把手教你!

3.3 按需 選擇合適的解碼方式

最佳化原因:不同的圖片解碼方式 對應的 記憶體佔用大小 相差很大,具體如下

如何進行Bitmap資源最佳化?手把手教你!

特別注意:

1. 點陣圖位數越高,代表其可儲存的顏色資訊越多,影像越逼真

2. 一般情況下,使用ARGB_8888,其最佔記憶體 = 1個畫素佔4位元組

3. 示例:若有1張480x800的圖片,格式 = ARGB_8888,將會佔用1500KB的記憶體

最佳化方案:根據需求 選擇合適的解碼方式,需注意的是:

1. 使用引數:BitmapFactory.inPreferredConfig 設定

2. 預設使用解碼方式:ARGB_8888

3.4 設定 圖片快取

最佳化原因:重複載入圖片資源耗費太多資源(CPU、記憶體 & 流量)

最佳化方案

如何進行Bitmap資源最佳化?手把手教你!

至此,關於圖片資源Bitmap的使用最佳化講解完畢

總結

本文全面&詳細的講解了效能最佳化中的 圖片資源Bitmap的使用最佳化,總結如下:

如何進行Bitmap資源最佳化?手把手教你!

最後

有些東西有壓力才有動力,而學到的知識點,都是錢(因為技術人員大部分情況是根據你的能力來定級、來發薪水的),技多不壓身。

附上我的Android核心技術大綱,獲取相關內容來GitHub:
vx:xx13414521

如何進行Bitmap資源最佳化?手把手教你!

還有Android的精選學習進階影片,三星架構師、阿里p7、聯通架構師等大牛講解進階內容,私信【學習影片 】領取

如何進行Bitmap資源最佳化?手把手教你!
如何進行Bitmap資源最佳化?手把手教你!


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69952849/viewspace-2675338/,如需轉載,請註明出處,否則將追究法律責任。

相關文章