MMKV是什么?
在Android开发过程中,我们经常会使用到一些存储。经常使用sharepreferences
存储,当你的数据量在不需要使用数据库,但sharepreferences
感觉又无法承载的时候,但性能卓越的存储框架,由腾讯旗下的微信开发—MMKV
今天我们主要从这几个方面来解释一下MMKV
- MMKV存储优势
- MMKV存储支持的数据类型
- MMKV引入依赖
- MMKV存储与获取
- MMKV更多知识
- MainActivity中使用代码
一. MMKV存储优势
MMKV 是腾讯旗下开发的一款存储组件,采用 key - value
方式存储,存储数据种类比较多,读写效率高
其有以下优点:
- 非常高效。MMKV使用mmap与文件保持内存同步,使用protobuf对数值进行编码/解码,充分利用Android,实现最佳性能。
- 多进程并发:MMKV支持进程之间的并发读写访问。
- 易于使用的。你可以随时使用MMKV。所有的更改都会立即保存,不需要同步,也不需要apply调用。
- 小。少数几个文件:MMKV包含进程锁、编码/解码帮助程序和mmap逻辑等等。很整洁。
大约60K的二进制大小:MMKV在每个架构上增加了大约60K的应用程序大小,而压缩(apk)时增加的就少多了。二. MMKV存储支持的数据类型
MMKV
存储数据以key-value
形式存储,其接收以下数据类型:
- boolean
- int
- long
- float
- double
- String
- set集合
- byte[]数组
-
可序列化对象
三.MMKV引入依赖
依赖注入
在 App 模块的 build.gradle 文件里添加:
-
dependencies { implementation 'com.tencent:mmkv:1.0.22' // replace "1.0.22" with any available version }
初始化
-
// 设置初始化的根目录 String dir = getFilesDir().getAbsolutePath() + "/mmkv_2"; String rootDir = MMKV.initialize(dir); Log.i("MMKV", "mmkv root: " + rootDir);
/获得默认存储对象 MMKV kv = MMKV.defaultMMKV(); //存boolean值 kv.encode("bool", true); boolean bValue = kv.decodeBool("bool"); LogUtil.i("========bValue===="+bValue); //存int值 kv.encode("int", Integer.MIN_VALUE); int iValue = kv.decodeInt("int"); LogUtil.i("========iValue===="+iValue); //存long值 kv.encode("long",60L); long longValue=kv.decodeLong("long"); LogUtil.i("========longValue===="+longValue); //存float值 kv.encode("float",30f); float floatValue=kv.decodeFloat("float"); LogUtil.i("========floatValue===="+floatValue);
MMKV还有更多功能,如:
- 自定义存储实例
- 自定义存储路径
- 设置是否加密及自定义加密的key
- 查询及删除等方法
-
// 添加/更新数据 kv.encode(key, value); // 获取数据 int tmp = kv.decodeInt(key); // 删除数据 kv.removeValueForKey(key);
SP 的迁移
-
private void testImportSharedPreferences() { MMKV mmkv = MMKV.mmkvWithID("myData"); SharedPreferences old_man = getSharedPreferences("myData", MODE_PRIVATE); // 迁移旧数据 mmkv.importFromSharedPreferences(old_man); // 清空旧数据 old_man.edit().clear().commit(); ...... }