前言
- 在 Android開(kāi)發(fā)中,性能優(yōu)化策略十分重要
- 本文主要講解性能優(yōu)化中的Bitmap 使用優(yōu)化,希望你們會(huì)喜歡
目錄

1.png
1. 優(yōu)化原因
即 為什么要優(yōu)化圖片Bitmap資源,具體如下圖:

1.png
2. 優(yōu)化方向
本文將從 以下方面優(yōu)化圖片Bitmap資源的使用 & 內(nèi)存管理

1.png
3. 具體優(yōu)化方案
下面,我將詳細(xì)講解每個(gè)優(yōu)化方向的具體優(yōu)化方案

1.png
3.1 使用完畢后 釋放圖片資源
- 優(yōu)化原因
使用完畢后若不釋放圖片資源,容易造成內(nèi)存泄露,從而導(dǎo)致內(nèi)存溢出 - 優(yōu)化方案
a. 在 Android2.3.3(API 10)前,調(diào)用 Bitmap.recycle()方法
b. 在 Android2.3.3(API 10)后,采用軟引用(SoftReference) -
具體描述
在 Android2.3.3(API 10)前、后,Bitmap對(duì)象 & 其像素?cái)?shù)據(jù) 的存儲(chǔ)位置不同,從而導(dǎo)致釋放圖片資源的方式不同,具體如下圖
1.png
注:若調(diào)用了Bitmap.recycle()后,再繪制Bitmap,則會(huì)出現(xiàn)Canvas: trying to use a recycled bitmap錯(cuò)誤
3.2 根據(jù)分辨率適配 & 縮放圖片
- 優(yōu)化原因
若 Bitmap 與 當(dāng)前設(shè)備的分辨率不匹配,則會(huì)拉伸Bitmap,而B(niǎo)itmap分辨率增加后,所占用的內(nèi)存也會(huì)相應(yīng)增加
因?yàn)锽itmap 的內(nèi)存占用 根據(jù) x、y的大小來(lái)增加的
-
優(yōu)化方案
1.png
3.3 按需 選擇合適的解碼方式
-
優(yōu)化原因
不同的圖片解碼方式 對(duì)應(yīng)的 內(nèi)存占用大小 相差很大,具體如下
1.png - 優(yōu)化方案
根據(jù)需求 選擇合適的解碼方式
使用參數(shù):BitmapFactory.inPreferredConfig 設(shè)置
默認(rèn)使用解碼方式:ARGB_8888
3.4 設(shè)置 圖片緩存
優(yōu)化原因
重復(fù)加載圖片資源耗費(fèi)太多資源(CPU、內(nèi)存 & 流量)-
優(yōu)化方案
1.png
關(guān)于三級(jí)緩存機(jī)制,此處不作過(guò)多描述,具體請(qǐng)看文章:三級(jí)緩存說(shuō)明
至此,關(guān)于圖片資源Bitmap的使用優(yōu)化講解完畢
4. 總結(jié)
-
本文全面總結(jié)了圖片資源Bitmap的使用優(yōu)化,具體如下圖
1.png




