當記憶體中不存在該時從儲存裝置中載入,當儲存裝置中也不存在該時從網路中去獲取。
快取一般要包含新增 獲取 刪除三類操作。
lrucache (least recently used 最近最少使用演算法,記憶體快取),disklrucache(儲存快取)。
lrucache快取用於實現記憶體快取。
lrucache是android3.1提供的乙個快取類(泛型類),其內部採用linkedhashmap以強引用的方式儲存快取物件,其提供get,put方法完成快取的獲取及新增。
強引用:直接的物件引用
軟引用:若物件只有軟引用,系統記憶體不足時此物件會被gc**。
弱引用:若物件只有弱引用,此物件隨時會被gc**。
此外lrucache是執行緒安全的,使用時不必考慮同步問題。
使用:
lrucacheacache=new lrucache((int) (runtime.getruntime().maxmemory()/(1024*1024)/5))
@override
protected void entryremoved(boolean evicted, string key,
bitmap oldvalue, bitmap newvalue)
};
其中只需要重寫sizeof(返回bitmap的大小),跟entryremoved(刪除bitmap)方法。當然也可以自定義類。
注意bitmap的儲存是以鍵值對的形式儲存,獲取,存放,刪除形式如下:
acache.put("bitmap", null);
acache.get("bitmap");
acache.remove("bitmap");
disklrucache用於實現儲存裝置快取。通過將儲存物件寫入檔案系統實現快取。
其並非android sdk內容,這裡不做介紹。
picasso.with(mcontext).load(path)
.resize(dimenutil.dptopx(mcontext, 76),dimenutil.dptopx(mcontext, 76))
.into(imageview);
Android中清除快取
有時候會遇到要清除應用快取的功能,不經常用,總忘,所以在這裡總結,實際價值個人感覺不大。快取管理類 public class datacleanmanager return getformatsize cachesize 清空快取 param context public static boolea...
glide的快取策略
本文主要介紹了如何配置和管理glide中的快取,其中大部分內容都可以直接在官方wiki中找到,這裡只是進行了整理和彙總。言歸正傳,glide支援的二級快取 並不是 快取,因為從網路載入並不屬於快取 即記憶體快取和磁碟快取。磁碟快取 一般的快取指的就是磁碟快取,把網路上的快取到本地,這樣就不需要每次都...
redis 的快取策略
配置redis成為乙個快取,如果redis當做乙個快取來用,所有的key都有過期時間 1.配置快取 1 設定最大記憶體使用量 maxmemory 2mb 2 設定過期策略 maxmemory policy allkeys lru 該設定並不需要我們的應用使用expire 或相似的命令 命令去設定每個...