什么是MMKV?git
MMKV 是基于 mmap 内存映射的移动端通用 key-value 组件,底层序列化/反序列化使用 protobuf 实现,性能高,稳定性强。程序员
https://github.com/Tencent/MMKVgithub
为何要替代SharedPreferences?安全
首先 安全性好。 SP其实是把键值对放到本地文件中进行存储。若是要保证数据安全须要本身加密。多线程
其次 读写速度更快。 MMKV是放在内存里面,经过Ashmem 匿名共享内存实现,读取和写入更方便。性能
第三 支持多线程访问。因为实现机制是放在匿名共享内存,你不须要关注内存释放以后的回写和读取。对于多线程支持更好。this
第四 效率更高。MMKV 使用protobuf进行序列化和反序列化,比起SP的xml存放方式,更加高效。加密
最重要的是 MMKV支持从 SP里面进行迁移。spa
以上这些优势 基本能够做为一个程序员对于代码 “简洁、高效、安全、友好、扩展性好”的追求。 因此之后你还用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);