欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

高性能MMKV数据交互分析-MMKV初始化

程序员文章站 2022-04-16 07:50:01
什么是MMKV? MMKV 是基于 mmap 内存映射的移动端通用 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。 https://github.com/Tencent/MMKV 为什么要替代SharedPreferences? 首先 安全性好。 SP ......

什么是mmkv?

mmkv 是基于 mmap 内存映射的移动端通用 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。

https://github.com/tencent/mmkv

为什么要替代sharedpreferences?

首先 安全性好。 sp实际上是把键值对放到本地文件中进行存储。如果要保证数据安全需要自己加密。

其次 读写速度更快。 mmkv是放在内存里面,通过ashmem 匿名共享内存实现,读取和写入更方便。

第三 支持多线程访问。由于实现机制是放在匿名共享内存,你不需要关注内存释放之后的回写和读取。对于多线程支持更好。

第四 效率更高。mmkv 使用protobuf进行序列化和反序列化,比起sp的xml存放方式,更加高效。

最重要的是 mmkv支持从 sp里面进行迁移。

以上这些优点 基本可以作为一个程序员对于代码 “简洁、高效、安全、友好、扩展性好”的追求。 所以以后你还用sp吗?

1.依赖注入

dependencies {
    implementation 'com.tencent:mmkv:1.0.10'
    // replace "1.0.10" with any available version
}

2.在application中进行初始化

mmkv.initialize(this);

3.直接使用

import com.tencent.mmkv.mmkv;
 
mmkv kv = mmkv.defaultmmkv();
​
kv.encode("bool", true);
boolean bvalue = kv.decodebool("bool");
​
kv.encode("int", integer.min_value);
int ivalue = kv.decodeint("int");
​
kv.encode("string", "hello from mmkv");
string str = kv.decodestring("string");

 4. 分开使用多个mmkv实例例

mmkv* mmkv = mmkv.mmkvwithid("myid");
mmkv.encode("bool", true);

5. 多进程模式

mmkv* mmkv = mmkv.mmkvwithid("interprocesskv", mmkv.multi_process_mode);
mmkv.encode("bool", true);