介紹
Android 應用快取很常見,大多數應用都在使用DiskLruCache快取技術,也有很多人介紹過DiskLruCache,因此我在這裡就不介紹了。
DiskLruCache用起來不難,但是如果不加以封裝的話,你會遇到各種open呀各種方法的組合,總之,不加以封裝,還是比較麻煩的,於是就有了這篇部落格,一行程式碼即可搞定快取。
效果演示
以上就是儲存快取資料以及讀取快取資料的效果
支援
能快取些什麼資料?
- 任何java物件,包括List集合。
- 圖片
該快取工具主要快取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.說明:
- 該工具可以設定快取路徑,也可以不用設定,預設的快取路徑是: /sdcard/Android/data/(應用包名)/cache
- 引數key為快取檔案的唯一標識,圖片快取以圖片的url為唯一標識
- 快取檔名為md5編碼後的名稱
依賴
dependencies{
compile 'cc.fussen:cachelibrary:1.5.0'
}
複製程式碼
最後說明
- 該工具封裝相對簡單,後面會繼續優化,該工具的封裝思想來自於Glide
- 如果遇到什麼問題,可以直接聯絡我
- 想了解該工具demo以及原理的,可以在微信公共號:AppCode裡直接回復「快取」即可獲得原始碼地址
- 掃描下面二維碼即可關注AppCode