Android內(nèi)存優(yōu)化圖片相關(guān)

圖片內(nèi)存優(yōu)化都是一些比較瑣碎的點(diǎn)位他,這里記錄幾個(gè)開(kāi)發(fā)中常遇到的。

XML中的可優(yōu)化點(diǎn)

1 盡量少使用selector

使用selector來(lái)做選中的效果很方便,但是有一點(diǎn)小問(wèn)題就是selector會(huì)一次性將兩張圖片一塊兒加載到內(nèi)存款票,如果頁(yè)面中Button很多且圖片大的話就會(huì)占用相當(dāng)一部分內(nèi)存踏幻。

解決方案:解決方案就是利用onTouch()處理枷颊,監(jiān)聽(tīng)down、move事件來(lái)做為pressed狀態(tài)處理该面,然后up事件恢復(fù)默認(rèn)圖片夭苗。如果你覺(jué)的很麻煩的話,沒(méi)關(guān)系我也這么覺(jué)的隔缀。题造。。猾瘸。即便是可以做統(tǒng)一處理

2 盡量不要AnimationDrawable

AnimationDrawable也就是我們常說(shuō)的幀動(dòng)畫(huà)晌梨,這個(gè)動(dòng)畫(huà)是需要配置每一幀的圖片都加載到內(nèi)存。

3 不要給Activity設(shè)置背景圖

4 使用ViewStub來(lái)展示圖片

如果圖片比較大且不是必要出現(xiàn)時(shí)可以考慮使用ViewStub來(lái)處理

Bitmap相關(guān)

1 Bitmap使用完之后及時(shí)recycle掉
2 將Bitmap大小設(shè)置成與ImageView大小相當(dāng)须妻,通過(guò)isSimpleSize屬性來(lái)處理
3 選擇合適的位圖格式仔蝌,位圖格式有ARGB8888、ARGB4444荒吏,RGB565敛惊、ALPHA_8這4種,所占內(nèi)存字節(jié)數(shù)分別是4绰更、2瞧挤、2锡宋、1字節(jié),Android默認(rèn)位圖格式時(shí)ARGB8888特恬,如果對(duì)圖片質(zhì)量要求不高的時(shí)候可以使用ARGB4444

網(wǎng)絡(luò)圖片

Glide的緩存模型時(shí)怎么樣的执俩?大致來(lái)說(shuō)是兩層內(nèi)存緩存和資盤緩存,但是內(nèi)存緩存又分為了兩層分別是active和lru癌刽,所以總的來(lái)說(shuō)是三層吧役首。

1 active
這層利用的是HashMap但是重點(diǎn)是HashMap持有的是弱引用,這樣就能保證這部分圖片在GC時(shí)候被回收显拜,而這部分圖片就是表示正在使用的圖片衡奥。active里面的對(duì)象生命周期都比較短,沒(méi)有設(shè)置容量上限远荠,但是LRU就有
2 lru
這部分就是LRUCache矮固,這個(gè)部分的空間大小默認(rèn)是屏幕寬的像素值x高的像素值x4這么多字節(jié)
3 磁盤緩存
當(dāng)active和lru都沒(méi)有獲取到圖片的時(shí)候,就嘗試從磁盤緩存中獲取譬淳,磁盤緩存是IO操作所以必然會(huì)放到線程里面去做档址。EngineJob就是一個(gè)Runnable

三者之前的關(guān)系又是怎么樣的呢?有下面幾點(diǎn)
1 首先從active中讀邻梆,如果沒(méi)有就從lru中讀辰晕,如果lru中也沒(méi)有的話就會(huì)從磁盤里面讀。
2 如果active中沒(méi)讀取到确虱,但是從lru中讀取到了含友,則會(huì)在active中添加同事會(huì)移除lru中的該圖片對(duì)象。反之如果active中的圖片不再被使用時(shí)校辩,會(huì)從active中移除同時(shí)會(huì)添加到lru中
3 當(dāng)active中和lru中都沒(méi)有讀取到圖片窘问,則從磁盤中讀完成而之后會(huì)添加到active中

Glide早期的版本是先從lru中讀,然后再放到active中宜咒。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末惠赫,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子故黑,更是在濱河造成了極大的恐慌儿咱,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,651評(píng)論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件场晶,死亡現(xiàn)場(chǎng)離奇詭異混埠,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)诗轻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門钳宪,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人,你說(shuō)我怎么就攤上這事吏颖∩μ澹” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,931評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵半醉,是天一觀的道長(zhǎng)疚俱。 經(jīng)常有香客問(wèn)我,道長(zhǎng)缩多,這世上最難降的妖魔是什么呆奕? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,218評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮瞧壮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘匙握。我一直安慰自己咆槽,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,234評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布圈纺。 她就那樣靜靜地躺著秦忿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蛾娶。 梳的紋絲不亂的頭發(fā)上灯谣,一...
    開(kāi)封第一講書(shū)人閱讀 51,198評(píng)論 1 299
  • 那天,我揣著相機(jī)與錄音蛔琅,去河邊找鬼胎许。 笑死,一個(gè)胖子當(dāng)著我的面吹牛罗售,可吹牛的內(nèi)容都是我干的辜窑。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼寨躁,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼穆碎!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起职恳,我...
    開(kāi)封第一講書(shū)人閱讀 38,926評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤所禀,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后放钦,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評(píng)論 1 311
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡贺氓,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,563評(píng)論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片歇父。...
    茶點(diǎn)故事閱讀 39,731評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡翎冲,死狀恐怖抗悍,靈堂內(nèi)的尸體忽然破棺而出缴渊,到底是詐尸還是另有隱情衔沼,我是刑警寧澤骨望,帶...
    沈念sama閱讀 35,430評(píng)論 5 343
  • 正文 年R本政府宣布缘圈,位于F島的核電站绢涡,受9級(jí)特大地震影響雄可,放射性物質(zhì)發(fā)生泄漏聪舒。R本人自食惡果不足惜箱残,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,036評(píng)論 3 326
  • 文/蒙蒙 一盼理、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧思劳,春花似錦、人聲如沸潜叛。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,676評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)威兜。三九已至销斟,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間椒舵,已是汗流浹背蚂踊。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,829評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留笔宿,地道東北人犁钟。 一個(gè)月前我還...
    沈念sama閱讀 47,743評(píng)論 2 368
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像泼橘,于是被迫代替她去往敵國(guó)和親涝动。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,629評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容