Android 的二級緩存如此簡單

CacheDiskUtils

之前寫過一篇 你想要的 CacheUtils,簡單介紹了下其可以完美替代 ASimpleCache,而且修復(fù)了其中少許 BUG 并做了相應(yīng)優(yōu)化,相關(guān) API 如下所示:

緩存相關(guān) -> CacheUtils.java

getInstance             : 獲取緩存實(shí)例
Instance.put            : 緩存中寫入數(shù)據(jù)
Instance.getBytes       : 緩存中讀取字節(jié)數(shù)組
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  : 獲取緩存?zhèn)€數(shù)
Instance.remove         : 根據(jù)鍵值移除緩存
Instance.clear          : 清除所有緩存

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

CacheMemoryUtils

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

內(nèi)存緩存相關(guān) -> CacheMemoryUtils.java -> Test

getInstance           : 獲取緩存實(shí)例
Instance.put          : 緩存中寫入數(shù)據(jù)
Instance.get          : 緩存中讀取字節(jié)數(shù)組
Instance.getCacheCount: 獲取緩存?zhèn)€數(shù)
Instance.remove       : 根據(jù)鍵值移除緩存
Instance.clear        : 清除所有緩存

CacheDoubleUtils

結(jié)合硬盤緩存工具類 CacheDiskUtils 和內(nèi)存緩存工具類 CacheMemoryUtils,那么我們的二級緩存工具類 CacheDoubleUtils 便誕生了,其 API 如下所示:

二級緩存相關(guān) -> CacheDoubleUtils.java -> Test

getInstance                 : 獲取緩存實(shí)例
Instance.put                : 緩存中寫入數(shù)據(jù)
Instance.getBytes           : 緩存中讀取字節(jié)數(shù)組
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  : 獲取磁盤緩存?zhèn)€數(shù)
Instance.getCacheMemoryCount: 獲取內(nèi)存緩存?zhèn)€數(shù)
Instance.remove             : 根據(jù)鍵值移除緩存
Instance.clear              : 清除所有緩存

借助以上三個緩存工具類,那么 Android 端的緩存實(shí)現(xiàn)便再也不是什么難題了,例如你想要實(shí)現(xiàn) RxCache,那么借助 RxJava 的 compose 操作符和我的工具類,把數(shù)據(jù)放入緩存不就輕而易舉地實(shí)現(xiàn)了么,更多風(fēng)騷的姿勢可待你解鎖。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,058評論 25 709
  • 很多人在自己經(jīng)做出錯誤的行為選擇后覺得自己進(jìn)步了,但在還沒有遇到第二次艱難考驗(yàn)和度量并形成客觀標(biāo)準(zhǔn)的結(jié)果時,自詡成...
    陳俊洋r閱讀 198評論 0 0
  • 那么,到底什么是運(yùn)氣?直接給答案:運(yùn)氣的本質(zhì)就是通過不確定性獲得收益。啥叫"不確定性"啊,就是字面的意思:一件事情...
    Lee公子閱讀 881評論 0 0
  • 人到中年,應(yīng)該讀一讀書,讓漂浮了若干年的心沉淀下來,
    一水的簡書閱讀 158評論 0 2
  • 作業(yè)題目如上 我的不合理信念:應(yīng)該規(guī)則 父母應(yīng)該給孩子提供良好的情緒管理示范。 案例:上周因?yàn)楹⒆釉阡撉偾俸猩袭嬃?..
    拆書的阿福閱讀 332評論 0 0

友情鏈接更多精彩內(nèi)容