前言
- 在 Android開發(fā)中竟贯,性能優(yōu)化策略十分重要
- 本文主要講解性能優(yōu)化中的Bitmap 使用優(yōu)化,希望你們會喜歡
目錄
1.png
1. 優(yōu)化原因
即 為什么要優(yōu)化圖片Bitmap資源,具體如下圖:
1.png
2. 優(yōu)化方向
本文將從 以下方面優(yōu)化圖片Bitmap資源的使用 & 內(nèi)存管理
1.png
3. 具體優(yōu)化方案
下面措近,我將詳細(xì)講解每個優(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對象 & 其像素數(shù)據(jù) 的存儲位置不同,從而導(dǎo)致釋放圖片資源的方式不同垮刹,具體如下圖
1.png
注:若調(diào)用了Bitmap.recycle()后达吞,再繪制Bitmap,則會出現(xiàn)Canvas: trying to use a recycled bitmap錯誤
3.2 根據(jù)分辨率適配 & 縮放圖片
- 優(yōu)化原因
若 Bitmap 與 當(dāng)前設(shè)備的分辨率不匹配荒典,則會拉伸Bitmap酪劫,而Bitmap分辨率增加后,所占用的內(nèi)存也會相應(yīng)增加
因為Bitmap 的內(nèi)存占用 根據(jù) x寺董、y的大小來增加的
-
優(yōu)化方案
1.png
3.3 按需 選擇合適的解碼方式
-
優(yōu)化原因
不同的圖片解碼方式 對應(yīng)的 內(nèi)存占用大小 相差很大覆糟,具體如下
1.png - 優(yōu)化方案
根據(jù)需求 選擇合適的解碼方式
使用參數(shù):BitmapFactory.inPreferredConfig 設(shè)置
默認(rèn)使用解碼方式:ARGB_8888
3.4 設(shè)置 圖片緩存
優(yōu)化原因
重復(fù)加載圖片資源耗費太多資源(CPU、內(nèi)存 & 流量)-
優(yōu)化方案
1.png
關(guān)于三級緩存機制螃征,此處不作過多描述搪桂,具體請看文章:三級緩存說明
至此,關(guān)于圖片資源Bitmap的使用優(yōu)化講解完畢
4. 總結(jié)
-
本文全面總結(jié)了圖片資源Bitmap的使用優(yōu)化盯滚,具體如下圖
1.png