1 建立disklrucache快取物件
四個引數的含義:
3)1個key對應幾個快取內容,一般傳1
4)快取使用的磁碟空間大小
用法示例:
第乙個引數,設定使用的cache目錄
string path = context.getexternalcachedir().getabsolutepath();
string dirname = 「imageloadercache」;
file file = new file(path,dirname);
packageinfo info =context.getpackagemanager().getpackageinfo(context.getpackagename(),0);
int version = info.versioincode;
2 向disklrucache中存入檔案
向disklrucache中快取內容的方式與寫入偏好設定檔案時非常類似。先獲得乙個editor物件,然後通過editor物件快取內容,快取完畢後要提交commit。
1)先要獲得乙個editor物件
disklrucache.editor editor = cache.edit(key);
其中cache是disklrucache的例項,key為一會兒使用editor進行檔案儲存時使用的鍵。該key一般又要獲得的的路徑來表示(將路徑轉為md5字串)
2)接下來呼叫editor的newoutputstream方法。獲得乙個輸出流物件。將要快取的內容以inputstream的方式流到該outputstream物件中。newoutputstream方法需要乙個int引數,這個引數的意思是:建立editor物件的時候需要乙個key,而建立disklrucache物件的時候指定了乙個key對應幾個快取內容,這裡的int值指的就是,接下來即將快取的內容是該key對應的第幾個內容。如果乙個key只對應乙個快取內容,則這裡傳入0。
outputstream out = editor.newoutputstream(0);
bitmap.compress(compress.jpeg,100,out);
流操作完畢後,務必提交一下:
editor.commit();
3)最後在快取完畢後,還要提交一下剛才操作的日誌檔案
cache.flush();
3 從disklrucache中讀取快取內容
1)利用disklrucache的get方法獲得指定key對應的內容,但是該內容是以disrklrucache.snapshot型別來呈現的
snapshot snap = cache.get(key);
2) 要獲取snapshot中的具體內容,需要呼叫snapshot的getinputstream方法獲得乙個輸入流,以io流的方式獲得具體內容。
inputstream in = snap.getinputstream(0);
getinputstream方法同樣需要乙個int型別的引數,該引數的意義與之前editor物件獲得輸出流時提供的引數意義相同,不再贅述。
bitmap bitmap = bitmapfactroy.decodestream(in);
4 其他的一些相關api
remove(key) 移除指定key對應的所有快取內容
delete() 移除所有快取內容
本地快取DiskLruCache學習總結
第乙個指快取位址,第二個是版本號,第三個是乙個key可以快取檔案的個數,第四個是快取的最多位元組的資料。開起乙個disklrucache的方法 disklrucache mdisklrucache null try catch ioexception e catch nosuchalgorithme...
簡單的設計不簡單
最近看了 簡約至上 這本書,這本文章總結一下。推薦給對互動設計感興趣的童鞋。話說簡單 首先人們喜歡簡單 值得信賴 適應性強的產品。所以我們才會費盡心力去設計簡單的產品。人們喜歡簡單的產品原因有 1 產品的功能越多,就越難發現真正對使用者有價值的新功能。2 因為增加的複雜性導致他們很難找到自己真正需要...
簡單的設計不簡單
最近看了 簡約至上 這本書,這本文章總結一下。推薦給對互動設計感興趣的童鞋。話說簡單 首先人們喜歡簡單 值得信賴 適應性強的產品。所以我們才會費盡心力去設計簡單的產品。人們喜歡簡單的產品原因有 1 產品的功能越多,就越難發現真正對使用者有價值的新功能。2 因為增加的複雜性導致他們很難找到自己真正需要...