Android DiskLruCache緩存工具封裝

介紹

Android 應用緩存很常見,大多數應用都在使用DiskLruCache緩存技術,也有不少人介紹過DiskLruCache,所以我在這裏就不介紹了。java

DiskLruCache用起來不難,可是若是不加以封裝的話,你會遇到各類open呀各類方法的組合,總之,不加以封裝,仍是比較麻煩的,因而就有了這篇博客,一行代碼便可搞定緩存。json

效果演示

這裏寫圖片描述

以上就是保存緩存數據以及讀取緩存數據的效果緩存

支持

能緩存些什麼數據?

  1. 任何java對象,包括List集合。
  2. 圖片

該緩存工具主要緩存java對象,固然你若是要緩存json數據也能夠,你能夠把他當作String對象緩存到本地,讀取的時候讀取String數據就好,圖片主要是將流緩存到本地,而後讀取的時候讀取本地保存的流就好。bash

使用DiskLruCache緩存技術

使用DiskLruCache緩存技術的好處在於,你不用關心緩存的過時時間,以及緩存大小的問題,也不用關心版本變化後數據格式改變的問題,他會自動判斷軟件版本,也會自動刪除過時的舊數據,保證取到的數據沒有問題,也不用關心SD卡的異常問題微信

如何使用

實際上,該工具的使用遠遠要比你想象的簡單ide

1.保存緩存

1.保存java對象工具

String cachePath = getCacheDir(this);

        User user = new User();
        user.name = "fussen";
        user.age = "100";
        
        Cache.with(this)
             .path(cachePath)
             .saveCache("key", user);
複製代碼

2.保存List集合數據優化

List<String> mData = new ArrayList<>();
   
       String cachePath = getCacheDir(this);
		
        Cache.with(this)
             .path(cachePath))
             .saveCache("key", mData);
複製代碼

3.保存圖片this

String imageUrl = "http://img.my.csdn.net/uploads/201407/26/1406383059_2237.jpg";
	String cachePath = getCacheDir(this);
	Cache.with(this)
	       .path(cachePath)
	       .saveImage(imageUrl);
複製代碼

2.讀取緩存

1.讀取java對象緩存編碼

String cachePath = getCacheDir(this);
	User user = Cache.with(this)
		         .path(cachePath)
		         .getCache("key", User.class);
複製代碼

2.讀取List集合數據

String cachePath = getCacheDir(this);
	List<String> cacheList = Cache.with(this)
				      .path(cachePath)
		                      .getCacheList("key", String.class);
複製代碼

3.讀取圖片緩存

String cachePath = getCacheDir(this);
	
	Bitmap cacheBitmap = Cache.with(this)
		                  .path(cachePath)
		                  .getImageCache(imageUrl);

        imageView.setImageBitmap(cacheBitmap);
複製代碼

通過以上步驟,你的緩存將會保存到本地,如圖:

這裏寫圖片描述

這裏寫圖片描述

journal爲DiskLruCache緩存經典標識文件。

3.說明:

  1. 該工具能夠設置緩存路徑,也能夠不用設置,默認的緩存路徑是: /sdcard/Android/data/(應用包名)/cache
  2. 參數key爲緩存文件的惟一標識,圖片緩存以圖片的url爲惟一標識
  3. 緩存文件名爲md5編碼後的名稱

依賴

dependencies{
	compile 'cc.fussen:cachelibrary:1.5.0'
}
複製代碼

最後說明

  1. 該工具封裝相對簡單,後面會繼續優化,該工具的封裝思想來自於Glide
  2. 若是遇到什麼問題,能夠直接聯繫我
  3. 想了解該工具demo以及原理的,能夠在微信公共號:AppCode裏直接回復「緩存」便可得到源碼地址
  4. 掃描下面二維碼便可關注AppCode

AppCode
相關文章
相關標籤/搜索