圖片緩存之內(nèi)存緩存技術(shù)LruCache

圖片緩存之內(nèi)存緩存技術(shù)LruCache

ID:37770892

大小:26.22 KB

頁數(shù):6頁

時間:2019-05-30

圖片緩存之內(nèi)存緩存技術(shù)LruCache_第1頁
圖片緩存之內(nèi)存緩存技術(shù)LruCache_第2頁
圖片緩存之內(nèi)存緩存技術(shù)LruCache_第3頁
圖片緩存之內(nèi)存緩存技術(shù)LruCache_第4頁
圖片緩存之內(nèi)存緩存技術(shù)LruCache_第5頁
資源描述:

《圖片緩存之內(nèi)存緩存技術(shù)LruCache》由會員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫

1、圖片緩存之內(nèi)存緩存技術(shù)LruCache,軟引用每當(dāng)碰到一些大圖片的時候,我們?nèi)绻粚D片進(jìn)行處理就會報OOM異常,這個問題曾經(jīng)讓我覺得很煩惱,后來終于得到了解決,那么現(xiàn)在就讓我和大家一起分享一下吧。這篇博文要講的圖片緩存機(jī)制,我接觸到的有兩鐘,一種是軟引用,另一種是內(nèi)存緩存技術(shù)。先來看下兩者的使用方式,再來作比較。除了加載圖片時要用到緩存處理,還有一個比較重要的步驟要做,就是要先壓縮圖片。1、壓縮圖片至于要壓縮到什么狀態(tài)就要看自己當(dāng)時的處境了,壓縮圖片的時候既要達(dá)到一個小的值,又不能讓其模糊,更不能拉伸圖片。1./**2.????

2、????*加載內(nèi)存卡圖片3.????????*/4.????????BitmapFactory.Optionsoptions?=?new?BitmapFactory.Options();5.????????options.inJustDecodeBounds?=?true;?//設(shè)置了此屬性一定要記得將值設(shè)置為false6.????????Bitmapbitmap?=?null;7.????????bitmap?=?BitmapFactory.decodeFile(url,?options);8.????????int?be?=?

3、(int)?((options.outHeight?>?options.outWidth???options.outHeight?/?1509.????????????????:?options.outWidth?/?200));10.????????if?(be?<=?0)?//判斷200是否超過原始圖片高度11.????????????be?=?1;?//如果超過,則不進(jìn)行縮放12.????????options.inSampleSize?=?be;13.????????options.inPreferredConfig?=?

4、Bitmap.Config.ARGB_4444;14.????????options.inPurgeable?=?true;15.????????options.inInputShareable?=?true;16.????????options.inJustDecodeBounds?=?false;17.????????try?{18.????????????bitmap?=?BitmapFactory.decodeFile(url,?options);19.????????}?catch?(OutOfMemoryError?e

5、)?{20.????????????System.gc();21.????????????Log.e(TAG,?"OutOfMemoryError");22.????????}2、軟引用:只要有足夠的內(nèi)存,就一直保持對象,直到發(fā)現(xiàn)內(nèi)存吃緊且沒有StrongRef時才回收對象。我們可以這樣定義:map里面的鍵是用來放圖片地址的,既可以是網(wǎng)絡(luò)上的圖片地址,也可以SDcard上的圖片地址,map里面的值里面放的是持有軟引用的Bitmap,當(dāng)然如果你要放Drawable,那也是可以的。1.private?Map

6、eference>?imageMap?=?new?HashMap>();接下來就讓我再介紹一下如何具體加載圖片:步驟:(1)先通過URL查看緩存中是否有圖片,如果有,則直接去緩存中取得。???????????如果沒有,就開線程重新去網(wǎng)上下載。??????(2)下載完了之后,就把圖片放在緩存里面,方便下次可以直接從緩存中取得。1.public?BitmaploadBitmap(final?String?imageUrl,final?ImageCallBack

7、imageCallBack)?{2.????????SoftReference?reference?=?imageMap.get(imageUrl);3.????????if(reference?!=?null)?{4.????????????if(reference.get()?!=?null)?{5.????????????????return?reference.get();6.????????????}7.????????}8.????????final?Handler?handler?=?new?Hand

8、ler()?{9.????????????public?void?handleMessage(final?android.os.Messagemsg)?{10.????????????????//加入到緩存中11.????????????????B

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁,下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動畫的文件,查看預(yù)覽時可能會顯示錯亂或異常,文件下載后無此問題,請放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫負(fù)責(zé)整理代發(fā)布。如果您對本文檔版權(quán)有爭議請及時聯(lián)系客服。
3. 下載前請仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時可能由于網(wǎng)絡(luò)波動等原因無法下載或下載錯誤,付費(fèi)完成后未能成功下載的用戶請聯(lián)系客服處理。