CacheDiskUtils
之前寫過一篇 你想要的 CacheUtils,簡單介紹了下其可以完美替代 ASimpleCache,而且修復了其中少許 BUG 並做了相應優化,相關 API 如下所示:
快取相關 -> 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 可能就會移除 CacheUtils。
CacheMemoryUtils
講了磁碟快取另一個就是記憶體快取,記憶體快取工具類 CacheMemoryUtils 原理是利用 LruCache 來實現的(LRU 是Least Recently Used的縮寫,即最近最少使用),其 API 如下所示:
記憶體快取相關 -> 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 來檢視,相信你會懂得我為這個工具類的付出。