下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Bitmap那些事之內(nèi)存占用計(jì)算和加載注意事項(xiàng)
前言:本來我是做電視應(yīng)用的,但是因?yàn)楣疽鍪謾C(jī),人員緊張,所以就抽調(diào)我去支援一下,誰叫俺是雷鋒呢!我做的一個(gè)功能就是處理手機(jī)中的應(yīng)用ICON,處理無非就是美化一下,重新與底板進(jìn)行合成和裁剪,用到了很多Bitmap的知識(shí)。本來之前一直想寫一些關(guān)于Bitmap的博客,正好這是個(gè)機(jī)會(huì),因此Bitmap那些事系列博客誕生了。這個(gè)系列我會(huì)把學(xué)習(xí)Bitmap的一些知識(shí)發(fā)布出來供大家參考和交流。
在手機(jī)中圖片一般都是指Bitmap圖片,為什么要說Bitmap呢?因?yàn)榇蠹以陂_發(fā)應(yīng)用的時(shí)候,都會(huì)使用一些圖片來表現(xiàn)UI,用戶也喜歡看圖片,看文字獲取信息太慢并且不直觀,如果美工設(shè)計(jì)的好,看圖片基本上不怎么看你的文字內(nèi)容就知道你要表達(dá)什么,例如所有的購物網(wǎng)站都會(huì)編輯很多商品的配圖來呈現(xiàn)給用戶,由此可見圖片在應(yīng)用程序中的常見和重要。只要說到圖片就不能離開如何避免OOM這個(gè)主題,因?yàn)樵谔幚砗芏鄨D片時(shí)很容易出現(xiàn)OOM,那么學(xué)習(xí)圖片處理就顯得尤為重要了,下面就讓我們一步一步學(xué)習(xí)圖片的相關(guān)知識(shí)。Bitmap圖片占用內(nèi)存計(jì)算:
Bitmap圖片在加載到內(nèi)存的時(shí)候是按照:寬*高*像素點(diǎn)位數(shù)來計(jì)算的。你可以把圖片看成是由width行、height列的矩陣組成,每一個(gè)矩陣元素代表一個(gè)像素點(diǎn),每一個(gè)像素點(diǎn)都是1byte整數(shù)倍的數(shù)據(jù),這個(gè)數(shù)據(jù)越大,表示的色彩就越豐富,圖片的顯示質(zhì)量就越高。Bitmap中有一個(gè)枚舉類Config用來配置圖片的壓縮格式,代表每個(gè)像素是用多大的數(shù)據(jù)來存儲(chǔ)的,數(shù)值越大能夠存儲(chǔ)的顏色信息就越多,也就越豐富,顯示效果也就越好。Config.ALPHA_8是1byte,Config.RGB_565和Config.ARGB_4444都是2bytes,Config.RGB_565沒有Alpha值所以多用來配置沒有透明度的圖片,Config.ARGB_8888是4bytes,一般圖片都是按照這個(gè)來配置的。下面是獲取配置的代碼:static
int
getBytesPerPixel(Config
config)
{
if
(config
==
Config.ARGB_8888)
{
return
4;
}
else
if
(config
==
Config.RGB_565)
{
return
2;
}
else
if
(config
==
Config.ARGB_4444)
{
return
2;
}
else
if
(config
==
Config.ALPHA_8)
{
return
1;
}
return
1;
}使用圖片你需要注意哪些:1、android系統(tǒng)自身的問題。android系統(tǒng)給每一個(gè)應(yīng)用分配了一定的內(nèi)存空間,分配了多少要看廠家和機(jī)型,數(shù)值可以通過Runtime類獲取,Runtime.getRuntime()獲取實(shí)例,然后通過maxMemory()方法獲取系統(tǒng)可為APP分配的最大內(nèi)存,totalMemory()獲取APP當(dāng)前所分配的內(nèi)存heap空間大小,freeMemory()獲取當(dāng)前可用的內(nèi)存,當(dāng)被耗盡時(shí)會(huì)自動(dòng)擴(kuò)張,但是不會(huì)超過maxMemory。下圖為google官網(wǎng)提供的不同分辨率下不同的dpi分配的最小內(nèi)存;
/20150412220723805/20150412220739218
2、需要多大的照片。很多圖片其實(shí)在手機(jī)上顯示的時(shí)候不需要完全把原圖加載到內(nèi)存中,比如我手機(jī)相機(jī)拍了一張照片是4208*3120的,加載到內(nèi)存中占用的內(nèi)存就是52M,這是很恐怖的,兩張照片差不多就把你的app內(nèi)存給耗光了。一般情況下你都需要對(duì)需要加載的圖片進(jìn)行處理,這個(gè)處理主要是減小圖片尺寸,降低分辨率,比如你的控件顯示就是100*100的大小,那你就要把圖片縮小到100*100。
3、及時(shí)釋放內(nèi)存。安卓2.3.3(API級(jí)別10)之前,Bitmap像素?cái)?shù)據(jù)和Bitmap對(duì)象是分開存儲(chǔ)的,像素?cái)?shù)據(jù)是存儲(chǔ)在nativememory中,對(duì)象存儲(chǔ)在Dalvikheap中,nativememory中的像素?cái)?shù)據(jù)不是以一種可預(yù)見的方式釋放,可能導(dǎo)致應(yīng)用程序暫時(shí)超過其內(nèi)存限制和崩潰,所以在Android2.3.3(API10)之前你必須要調(diào)用recycle()方法來釋放掉內(nèi)存避免出現(xiàn)OOM,當(dāng)然前提是確定這個(gè)bitmap不再使用,否則會(huì)出現(xiàn)
"Canvas:tryingtousearecycledbitmap".
在Android3.0(API11)之后,Bitmap的像素?cái)?shù)據(jù)和Bitmap對(duì)象一起存儲(chǔ)在Dalvikheap中,所以我們不用手動(dòng)調(diào)用recycle()來釋放Bitmap對(duì)象,內(nèi)存的釋放都交給垃圾回收器來做。
以上是學(xué)習(xí)Bitmap的一些基礎(chǔ)知識(shí)和加載到手機(jī)內(nèi)存中需要注意的事項(xiàng),下一篇博客我會(huì)寫如何更好的加載Bitmap,怎樣省內(nèi)存,怎樣高效。謝謝大家的瀏覽,寫的不好的地方和有任何疑問請(qǐng)留言或者更快的與我交流請(qǐng)?zhí)砑樱篶oder_online公眾號(hào),這里不僅有我的文章,還有我的小伙伴們的,各種技術(shù)分享,不妨你來看看,我們期待你
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年溫室大棚內(nèi)植物種植技術(shù)服務(wù)合同3篇
- 2025年云南貨運(yùn)從業(yè)資格證考試題答案大全及解析
- 2025年荊門大車貨運(yùn)資格證考試題
- 2024全新車輛頂賬拆分及追償服務(wù)協(xié)議5篇
- 2025年河池怎么考貨運(yùn)從業(yè)資格證
- 2024年煤礦開發(fā)深度合作協(xié)議模版版B版
- 《男員工站立時(shí),怎》課件
- 安徽省淮北市五校聯(lián)考2022-2023學(xué)年八年級(jí)下學(xué)期第一次月考?xì)v史試題(解析版)
- 2024年物業(yè)服務(wù)管理合同(智能化系統(tǒng))
- 2024年水果訂購合同:柑橘專篇
- 2023年壓瘡護(hù)理年終總結(jié)
- 縣中醫(yī)院婦科重點(diǎn)??平ㄔO(shè)匯報(bào)
- 8D報(bào)告培訓(xùn)教材
- 資產(chǎn)評(píng)估過程中應(yīng)急預(yù)案
- 暫緩執(zhí)行房產(chǎn)拍賣申請(qǐng)書
- ECFA貨物貿(mào)易早期收獲計(jì)劃臺(tái)灣方面降稅產(chǎn)品清單(臺(tái)2011年稅則)
- 西方景觀設(shè)計(jì)思潮影響下的遺址公園景觀設(shè)計(jì)實(shí)踐-以西安環(huán)城公園為例的開題報(bào)告
- 15D500-15D505 防雷與接地圖集(合訂本)
- 投標(biāo)文件澄清通知 澄清函
- 病毒性心肌炎臨床路徑
- 幼兒園故事課件:《小馬過河》
評(píng)論
0/150
提交評(píng)論