Android 的二級緩存如斯簡單

CacheDiskUtils

以前寫過一篇 你想要的 CacheUtils,簡單介紹了下其能夠完美替代 ASimpleCache,並且修復了其中少量 BUG 並作了相應優化,相關 API 以下所示:java

緩存相關 -> CacheUtils.java

getInstance             : 獲取緩存實例
Instance.put            : 緩存中寫入數據
Instance.getBytes       : 緩存中讀取字節數組
Instance.getString      : 緩存中讀取 String
Instance.getJSONObject  : 緩存中讀取 JSONObject
Instance.getJSONArray   : 緩存中讀取 JSONArray
Instance.getBitmap      : 緩存中讀取 Bitmap
Instance.getDrawable    : 緩存中讀取 Drawable
Instance.getParcelable  : 緩存中讀取 Parcelable
Instance.getSerializable: 緩存中讀取 Serializable
Instance.getCacheSize   : 獲取緩存大小
Instance.getCacheCount  : 獲取緩存個數
Instance.remove         : 根據鍵值移除緩存
Instance.clear          : 清除全部緩存
複製代碼

其也就是所謂的硬盤緩存,在 AndroidUtilCode 1.17.0 版本,該 CacheUtils 已被我標記廢棄,可替換爲 CacheDiskUtils,下一個大版本1.18.x 可能就會移除 CacheUtilsgit

CacheMemoryUtils

講了磁盤緩存另外一個就是內存緩存,內存緩存工具類 CacheMemoryUtils 原理是利用 LruCache 來實現的(LRU 是Least Recently Used的縮寫,即最近最少使用),其 API 以下所示:github

內存緩存相關 -> CacheMemoryUtils.java -> Test

getInstance           : 獲取緩存實例
Instance.put          : 緩存中寫入數據
Instance.get          : 緩存中讀取字節數組
Instance.getCacheCount: 獲取緩存個數
Instance.remove       : 根據鍵值移除緩存
Instance.clear        : 清除全部緩存
複製代碼

CacheDoubleUtils

結合硬盤緩存工具類 CacheDiskUtils 和內存緩存工具類 CacheMemoryUtils,那麼咱們的二級緩存工具類 CacheDoubleUtils 便誕生了,其 API 以下所示:數組

二級緩存相關 -> CacheDoubleUtils.java -> Test

getInstance                 : 獲取緩存實例
Instance.put                : 緩存中寫入數據
Instance.getBytes           : 緩存中讀取字節數組
Instance.getString          : 緩存中讀取 String
Instance.getJSONObject      : 緩存中讀取 JSONObject
Instance.getJSONArray       : 緩存中讀取 JSONArray
Instance.getBitmap          : 緩存中讀取 Bitmap
Instance.getDrawable        : 緩存中讀取 Drawable
Instance.getParcelable      : 緩存中讀取 Parcelable
Instance.getSerializable    : 緩存中讀取 Serializable
Instance.getCacheDiskSize   : 獲取磁盤緩存大小
Instance.getCacheDiskCount  : 獲取磁盤緩存個數
Instance.getCacheMemoryCount: 獲取內存緩存個數
Instance.remove             : 根據鍵值移除緩存
Instance.clear              : 清除全部緩存
複製代碼

藉助以上三個緩存工具類,那麼 Android 端的緩存實現便不再是什麼難題了,例如你想要實現 RxCache,那麼藉助 RxJava 的 compose 操做符和個人工具類,把數據放入緩存不就垂手可得地實現了麼,更多風騷的姿式可待你解鎖。緩存

文章比較簡短精細,但實現的代碼是比較漫長粗壯的,要閱讀源碼和單測能夠 fork 個人 AndroidUtilCode 來查看,相信你會懂得我爲這個工具類的付出。bash

相關文章
相關標籤/搜索