1. 程式人生 > >Android DiskLruCache快取工具封裝

Android DiskLruCache快取工具封裝

介紹

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