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