Android中的三级缓存机制
目的:1防止oom 2,提高加載效率
bitmap對(duì)象默認(rèn) ARGB_8888高質(zhì)量圖片顯示,而我起先使用rgb565格式圖片呈現(xiàn)效果不變,內(nèi)存減少近一半,但是從Android4.0開(kāi)始該選項(xiàng)就無(wú)效了,即使設(shè)置了也按默認(rèn)
第一級(jí) ?強(qiáng)引用+軟引用?
采用LRU算法優(yōu)化內(nèi)存使用,內(nèi)存不足時(shí),把最小使用的圖片優(yōu)先從內(nèi)存移除
強(qiáng)引用:LRUCache即可 ?覆寫(xiě)sizeOf返回每次加載Bitmap占用大小,覆寫(xiě)entryRemoved,在硬內(nèi)存放滿時(shí)和移除最少使用Bitmap
軟引用:LinkedHashMap完成該算法,通過(guò)復(fù)寫(xiě)其removeEldestEntity方法實(shí)現(xiàn)
內(nèi)存大小:各分配1/4
獲取總內(nèi)存大小:
int menClass=((ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE)).getMemoryClass(); 關(guān)于url處理,存儲(chǔ)url的hashCode,避免將來(lái)文件名非法,提高查找效率。硬內(nèi)存:寧可oom內(nèi)存不足,也不會(huì)釋放其中存儲(chǔ)的數(shù)據(jù);
軟內(nèi)存:一般其中的數(shù)據(jù)也不會(huì)被回收,但是當(dāng)內(nèi)存不足時(shí),將釋放其中的數(shù)據(jù),釋放掉后,如果將來(lái)還要使用,則先從本地加載,
第二級(jí) ?本地緩存
同樣采取LRU算法管理緩存文件,當(dāng)SD卡剩余容量不足時(shí),優(yōu)先刪除使用最少圖片。
對(duì)存儲(chǔ)圖片根據(jù)使用時(shí)間生成LRU
第三級(jí):網(wǎng)絡(luò)讀取
如果本地也沒(méi)有,從網(wǎng)絡(luò)重新加載.
三級(jí)緩存通過(guò)httpclient訪問(wèn)網(wǎng)絡(luò),先放到硬緩存里面,要讀再去加載.
總結(jié)
以上是生活随笔為你收集整理的Android中的三级缓存机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: linux下常用的软件
- 下一篇: Android性能优化之内存优化