以前寫過一篇 你想要的 CacheUtils,簡單介紹了下其能夠完美替代 ASimpleCache,並且修復了其中少量 BUG 並作了相應優化,相關 API 以下所示: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。git
講了磁盤緩存另外一個就是內存緩存,內存緩存工具類 CacheMemoryUtils 原理是利用 LruCache 來實現的(LRU 是Least Recently Used的縮寫,即最近最少使用),其 API 以下所示:github
getInstance : 獲取緩存實例
Instance.put : 緩存中寫入數據
Instance.get : 緩存中讀取字節數組
Instance.getCacheCount: 獲取緩存個數
Instance.remove : 根據鍵值移除緩存
Instance.clear : 清除全部緩存
複製代碼
結合硬盤緩存工具類 CacheDiskUtils 和內存緩存工具類 CacheMemoryUtils,那麼咱們的二級緩存工具類 CacheDoubleUtils 便誕生了,其 API 以下所示:數組
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