OpenHarmony 对存储框架—MMKV

介绍

一款小型键值对存储框架

  • 支持存储 number、boolean、string、Set类型数据存储
  • 支持继承组件中 SerializeBase.ets 的 class 类对象的序列化反序列化
  • 支持存储数据备份
  • 支持存储数据恢复

下载安装

ohpm install @ohos/mmkv

OpenHarmony ohpm 环境配置等更多内容,请参考如何安装 OpenHarmony ohpm 包

使用

1、初始化:设置 mmkv 保存文件根目录(rootPath)和缓存目录(cachePath)

MMKV.initialize(rootPath, cachePath)

2、实例化 mmkv:

let mmkv = MMKV.getBackedUpMMKVWithID(mmapID, MMKV.SINGLE_PROCESS_MODE, "Tencent MMKV", backupRootDir);

3、存取键值对数据:

3.1 常用数据类型:boolean、number、string、Set
存数据示例:
mmkv.encodeBool('boolData', false)
mmkv.encodeNumber('numberData', 3.0122)
mmkv.encodeString('stringData', 'dsfsg')
let set1 = new Set<string>()
set1.add('ass1')
mmkv.encodeSet('setData', set1)
取数据示例:
mmkv.decodeBool('boolData')
mmkv.decodeNumber('stringData')
mmkv.decodeString('numberData')
mmkv.decodeSet('setData')
3.2 类对象数据的序列化反序列化
类对象需要继承 SerializeBase类,需序列化属性需要标识注解@Serialize() 如:
class MyClass extends SerializeBase{
    @Serialize()
    public code: number = 0;
    public title: string = 'titles';
    @Serialize()
    public description: string = 'descs';
}
存数据:
let myClass1 = new MyClass(1, 't1', 'desc1')
kv.encodeSerialize('serialize111', myClass1)
取数据:
let myClass2 = kv.decodeSerialize('serialize111', new MyClass())

4、系统轻量级存储数据转存为mmkv存储

//name:context:上下文, preference文件名, callback:异步回调
preferencesToMMKV(name: string, callback: ICallBack, context: Context)

5、设置加密密钥

mmkv.reCryptKey('Key_seq_1') //Key_seq_1:加密密钥

6、数据备份

备份otherDir路径mmapID的mmkv存储数据到backupRootDir
MMKV.backupOneToDirectory(mmapID, backupRootDir, otherDir)//mmapID:需要备份的mmapID;backupRootDir:备份到目标路径;otherDir:待备份所在路径
备份全部mmkv存储数据到backupRootDir
MMKV.backupAllToDirectory(backupRootDir) //backupRootDir:备份到目标路径

7、数据恢复

从srcDir恢复mmkv存储数据
MMKV.restoreOneMMKVFromDirectory(mmapID, srcDir, otherDir)//mmapID:需要恢复的mmapID;srcDir:目标路径;otherDir:待备份所在路径
恢复srcDir路径下的全部mmkv存储数据
MMKV.restoreAllFromDirectory(srcDir) //srcDir: 目标路径

8、清除所有存储数据

mmkv.clearAll()

接口说明

方法名入参接口描述
version获取 native版本
getRootDir获取存储路径
pageSize获取设备内存页数量
getDefaultMMKVmode?: number, cryptKey?: string创建默认实例
totalSize获取基础文件的大小
encodekey: string, value: number、Set、string、boolean存储数据
decodeStringkey: string, defaultValue?: string根据key获取字符串值
decodeBoolkey: string, defaultValue?: boolean根据key获取布尔值
decodeNumberhandle: string, key: string, defaultValue: number根据key获取number值
decodeSetkey: string, defaultValue?: Set根据key获取数组值
containsKeykey: string检查是否包含传入的key
getCryptKey获取加密密钥
getMMapID获取实例id
removeValueForKeykey: string按key移除值
removeValuesForKeysvalue: string[]批量移除值
clearAll清除所有键值
count获取key的数量
isFileValidmmapID: string检查MMKV文件是否有效
reCryptKeycryptKey: string重新设置密钥
backupOneToDirectorymmapID: string, dstDir: string, rootPath: string将一个MMKV实例备份到dstDir
backupAllToDirectorydstDir: string将所有MMKV实例备份到dstDir
restoreOneMMKVFromDirectorymmapID: string, srcDir: string, rootPath: string从srcDir恢复一个MMKV实例
restoreAllFromDirectorysrcDir: string从srcDir恢复所有MMKV实例
initializeroot: string, cachePath: string, logLevel?: MMKVLogLevel初始化MMKV
getBackedUpMMKVWithIDmmapID: string, mode: number, crpKey: string, rootPath: string获取备份MMKV实例
encodeSerializekey: string, value: SerializeBase存储序列化数据
decodeSerializekey: string, defaultValue: T按key获取序列化数据
encodeStringkey: string, value: string存储String数据
encodeSetkey: string, value: Set存储Set数据
encodeBoolkey: string, value: boolean存储Bool数据
encodeNumberkey: string, value: number存储Number数据
getAllKeys获取所有key
clearMemoryCache清除MMKV实例的内存缓存
actualSize获取MMKV实例的实际使用大小
getHandle获取MMKV 实例句柄
close关闭mmkv实例
trim清除MMKV实例中的所有键值
checkContentChangedByOuterProcess手动检查进程间内容更改
setLogLevellevel: MMKVLogLevel设置日志级别
checkReSetCryptKeycryptKey: string重置加密密钥(不会加密或解密任何内容)
simpleLoglevel: MMKVLogLevel, message: string打印日志
preferencesToMMKVcontext: Context, name: string, callback: ICallBack系统轻量级存储数据转存为mmkv存储
LogUtil.dmessage: string打印debug类型日志
LogUtil.imessage: string打印info类型日志
LogUtil_emessage: string打印error类型日志
isEnd获取文件读取是否结束
close文件读取关闭

单元测试用例详情见TEST.md

约束与限制

在下述版本验证通过:

  • DevEco Studio: 4.0 (4.0.3.513), SDK: API10 (4.0.10.10)
  • DevEco Studio: 4.0 Canary2(4.0.3.312), SDK: API10 (4.0.9.3)
  • DevEco Studio: 3.1 Beta2(3.1.0.400), SDK: API9 Release(3.2.11.9)

目录结构

|----MMMKV
|     |---- entry  # 示例代码文件夹
|     |---- library  # MMMKV库文件夹
|           |---- index.ets  # 对外接口
|     |---- README.md  # 安装使用方法

为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05

《鸿蒙开发学习手册》:

如何快速入门:https://qr21.cn/FV7h05

  1. 基本概念
  2. 构建第一个ArkTS应用
  3. ……

开发基础知识:https://qr21.cn/FV7h05

  1. 应用基础知识
  2. 配置文件
  3. 应用数据管理
  4. 应用安全管理
  5. 应用隐私保护
  6. 三方应用调用管控机制
  7. 资源分类与访问
  8. 学习ArkTS语言
  9. ……

基于ArkTS 开发:https://qr21.cn/FV7h05

  1. Ability开发
  2. UI开发
  3. 公共事件与通知
  4. 窗口管理
  5. 媒体
  6. 安全
  7. 网络与链接
  8. 电话服务
  9. 数据管理
  10. 后台任务(Background Task)管理
  11. 设备管理
  12. 设备使用信息统计
  13. DFX
  14. 国际化开发
  15. 折叠屏系列
  16. ……

鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH

鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH

1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值