您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)怎么進(jìn)行Bitmap資源優(yōu)化,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
1. 優(yōu)化原因
即 為什么要優(yōu)化圖片Bitmap資源,具體如下圖:
2. 優(yōu)化方向
本文將從 以下方面優(yōu)化圖片Bitmap資源的使用 & 內(nèi)存管理:
3. 具體優(yōu)化方案
下面,我將詳細(xì)講解每個優(yōu)化方向的具體優(yōu)化方案
下面,我將詳細(xì)講解上述各個方案。
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)致釋放圖片資源的方式不同,具體如下圖:
注:若調(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)化方案:
3.3 按需 選擇合適的解碼方式
優(yōu)化原因:不同的圖片解碼方式 對應(yīng)的 內(nèi)存占用大小 相差很大,具體如下
特別注意:
1. 位圖位數(shù)越高,代表其可存儲的顏色信息越多,圖像越逼真
2. 一般情況下,使用ARGB_8888,其最占內(nèi)存 = 1個像素占4字節(jié)
3. 示例:若有1張480x800的圖片,格式 = ARGB_8888,將會占用1500KB的內(nèi)存
優(yōu)化方案:根據(jù)需求 選擇合適的解碼方式,需注意的是:
1. 使用參數(shù):BitmapFactory.inPreferredConfig 設(shè)置
2. 默認(rèn)使用解碼方式:ARGB_8888
3.4 設(shè)置 圖片緩存
優(yōu)化原因:重復(fù)加載圖片資源耗費(fèi)太多資源(CPU、內(nèi)存 & 流量)
優(yōu)化方案
關(guān)于“怎么進(jìn)行Bitmap資源優(yōu)化”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。