Android DiskLruCache快取工具封裝

fussen發表於2017-12-21

介紹

Android 應用快取很常見,大多數應用都在使用DiskLruCache快取技術,也有很多人介紹過DiskLruCache,因此我在這裡就不介紹了。

DiskLruCache用起來不難,但是如果不加以封裝的話,你會遇到各種open呀各種方法的組合,總之,不加以封裝,還是比較麻煩的,於是就有了這篇部落格,一行程式碼即可搞定快取。

效果演示

這裡寫圖片描述

以上就是儲存快取資料以及讀取快取資料的效果

支援

能快取些什麼資料?

  1. 任何java物件,包括List集合。
  2. 圖片

該快取工具主要快取java物件,當然你如果要快取json資料也可以,你可以把他當做String物件快取到本地,讀取的時候讀取String資料就好,圖片主要是將流快取到本地,然後讀取的時候讀取本地儲存的流就好。

使用DiskLruCache快取技術

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

如何使用

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

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.儲存圖片


	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

相關文章