Android 安卓告别SharedPreFerences,你好MMKV

曾经终败给现在 2022-10-16 15:28 366阅读 0赞

文章目录

    • 你好 MMKV!
    • 为什么要使用 MMKV
    • 代码使用
      • 引入
      • 最简单的代码栗子

你好 MMKV!

在这里插入图片描述

MMKV是腾讯开源的轻量级持久化存储框架,相比于传统的SharedPreFerences(以下简称SP),优点有很多

  1. MMKV有更好的锁机制来保证数据的完整,而SP的跨进程和apply机制会导致数据的丢失
  2. SP是全量更新,也正因如此,它的时间开销更大,MMKV存储是mmap,无需全量写入
  3. MMKV同时也能够直接导入SP中的数据
  4. 使用MMKV能够更好的避免程序ANR

为什么要使用 MMKV

使用SP低性能导致程序ANR,commit 和 apply 均可能会造成ANR,这也是Android工程师最为痛恨的大病之一,所以使用MMKV可以避免此问题,使得自己心情舒畅!从下图看出MMKV与SP的读写耗时对比,MMKV也是毫不逊色的!

(下面这一个图是我自己写的代码测试所得到的)
我写的代码测试

MMKV Github给出的:
Writing random int for 10000 times, we get this chart:
写入随机Int值10000次所得到的图表
MMKV Github统计图


代码使用

来实操一下,看看MMKV耐不耐操


引入

  1. dependencies {
  2. implementation 'com.tencent:mmkv-static:1.2.9'
  3. }

最简单的代码栗子

1、在Application初始化

  1. MMKV.initialize(this)//会返回MMVK存储的目录(String)

2、创建MMKV,可以通过 defaultMMKV() 来创建,这个是全局默认的;也可以通过 mmkvWithID() 对应自己业务来创建,如下:

  1. val mmkv = MMKV.defaultMMKV()
  2. val mmkv = MMKV.mmkvWithID("mmapID")

3、数据写入,可以写入Int,String,Boolean,Long,Float,Double类型的数据,只需要调用 encode() 方法写入数据,会根据数据类型进行重载。

  1. //写入Int
  2. mmkv.encode("keyName1", 123)
  3. //写入String
  4. mmkv.encode("keyName2", "Text")
  5. //写入Boolean
  6. mmkv.encode("keyName3", true)
  7. //写入Long
  8. mmkv.encode("keyName4", 123L)
  9. ...

4、数据读取,通过 decode 来进行读取

  1. //读取key为keyName1的Int类型数据
  2. mmkv.decodeInt("keyName1")
  3. //读取key为keyName1的Int类型数据,如果对应key的值不存在,会返回默认值123
  4. mmkv.decodeInt("keyName1",123)
  5. //读取key为keyName2的String类型数据,如果对应key的值不存在,会返回null,建议用下一个
  6. mmkv.decodeString("keyName2")
  7. //读取key为keyName2的String类型数据,如果对应key的值不存在,会返回默认字符串:defaultValue
  8. mmkv.decodeString("keyName2", "defaultValue")
  9. //不再举例,Boolean,Long,Float,Double参考以上使用

发表评论

表情:
评论列表 (有 0 条评论,366人围观)

还没有评论,来说两句吧...

相关阅读

    相关 android 博客 推荐,

    早晨7点多我就起床了,呵呵有点不可思议吧...然后赶到四院去看望外婆.老人家精神不错,我也放心许多:)陪了外婆一会,看完她吃完早饭我就骑车赶到外婆家,妈妈爸爸早已经在那了,都在