Android 安卓告别SharedPreFerences,你好MMKV
Posted 第三女神程忆难
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 安卓告别SharedPreFerences,你好MMKV相关的知识,希望对你有一定的参考价值。
你好 MMKV!
MMKV是腾讯开源的轻量级持久化存储框架,相比于传统的SharedPreFerences(以下简称SP),优点有很多
- MMKV有更好的锁机制来保证数据的完整,而SP的跨进程和apply机制会导致数据的丢失
- SP是全量更新,也正因如此,它的时间开销更大,MMKV存储是mmap,无需全量写入
- MMKV同时也能够直接导入SP中的数据
- 使用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耐不耐操
引入
dependencies {
implementation 'com.tencent:mmkv-static:1.2.9'
}
最简单的代码栗子
1、在Application初始化
MMKV.initialize(this)//会返回MMVK存储的目录(String)
2、创建MMKV,可以通过 defaultMMKV() 来创建,这个是全局默认的;也可以通过 mmkvWithID() 对应自己业务来创建,如下:
val mmkv = MMKV.defaultMMKV()
val mmkv = MMKV.mmkvWithID("mmapID")
3、数据写入,可以写入Int,String,Boolean,Long,Float,Double类型的数据,只需要调用 encode() 方法写入数据,会根据数据类型进行重载。
//写入Int
mmkv.encode("keyName1", 123)
//写入String
mmkv.encode("keyName2", "Text")
//写入Boolean
mmkv.encode("keyName3", true)
//写入Long
mmkv.encode("keyName4", 123L)
...
4、数据读取,通过 decode 来进行读取
//读取key为keyName1的Int类型数据
mmkv.decodeInt("keyName1")
//读取key为keyName1的Int类型数据,如果对应key的值不存在,会返回默认值123
mmkv.decodeInt("keyName1",123)
//读取key为keyName2的String类型数据,如果对应key的值不存在,会返回null,建议用下一个
mmkv.decodeString("keyName2")
//读取key为keyName2的String类型数据,如果对应key的值不存在,会返回默认字符串:defaultValue
mmkv.decodeString("keyName2", "defaultValue")
//不再举例,Boolean,Long,Float,Double参考以上使用
GitHub
以上是关于Android 安卓告别SharedPreFerences,你好MMKV的主要内容,如果未能解决你的问题,请参考以下文章