HarmonyOS MMKV的使用问题

1、对于MMKV的初始化问题

MMKV.initialize(rootPath, cachePath)

rootPath, cachePath 这两个参数如何获取?

2、获取MMKV实例的传值问题

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

对于其参数不理解,并且不知道传什么。


HarmonyOS
2024-09-12 11:44:46
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zxjiu

回答问题1:

aboutToAppear() { 
  filePath = GlobalContext.getContext().getObject("filesDir") as string 
  cachePath = GlobalContext.getContext().getObject("cacheDir") as string 
  LogUtil.i('aboutToAppear = ' + filePath) 
} 
init() { 
  LogUtil.i('init start ' + filePath) 
  let root = MMKV.initialize(filePath + '/mmkv', cachePath) 
  LogUtil.i('init root = ' + root) 
  this.showMsg('root = ' + root) 
  let context = GlobalContext.getContext().getObject("context") as Context 
  prefrence.getPreferences(context, fileName, (error, preferences) => { 
    preferences.put('key1', 'value1').then() 
    preferences.put('key3', 3).then() 
    preferences.put('key4', 4.012345648979466).then() 
    preferences.put('key2', false).then() 
    preferences.put('key1', 'hello mmkv').then() 
    preferences.getAll() 
      .then((obj) => { 
        LogUtil.e('testPreference allKeys = ' + JSON.stringify(obj)) 
      }) 
  }) 
  let kv = MMKV.getMMKVWithMMapID('imported', MMKV.SINGLE_PROCESS_MODE, "", undefined); 
  kv.clearAll() 
  let callBack: MyICallBack = new MyICallBack(); 
  kv.preferencesToMMKV(context, fileName, callBack); 
}

回答问题2:mmapID代表MMKV的标识符或者键;SINGLE_PROCESS_MODE表示单进程模式;"Tencent MMKV"代表MMKV的名字;backupRootDir代表存储目录。

testBackup() { 
  LogUtil.i('testBackup start ') 
  let backupRootDir = filePath + '/mmkv_backup_3' 
  let mMapID = 'testCrud' 
  let otherDir = filePath + '/mmkv_3' 
  let ret = MMKV.backupOneToDirectory(mMapID, backupRootDir, otherDir); 
  LogUtil.i('testBackup ret ' + ret) 
  if (ret) { 
    let mmkv = MMKV.getBackedUpMMKVWithID(mMapID, MMKV.SINGLE_PROCESS_MODE, 'Tencent MMKV', backupRootDir); 
    LogUtil.i('testBackup check on backup file[' + mmkv.getMMapID() + '] allKeys: ' + mmkv.getAllKeys()); 
  } 
  backupRootDir = filePath + '/mmkv_backup' 
  let temp = MMKV.backupAllToDirectory(backupRootDir) 
  this.showMsg('temp = ' + temp) 
  if (temp > 0) { 
    let mmkv = MMKV.getBackedUpMMKVWithID('imported', MMKV.SINGLE_PROCESS_MODE, "", backupRootDir); 
    LogUtil.i('backup file[' + mmkv.getMMapID() + '] allKeys: ' + mmkv.getAllKeys()); 
    mmkv = MMKV.getBackedUpMMKVWithID('testKotlin', MMKV.SINGLE_PROCESS_MODE, "", backupRootDir); 
    LogUtil.i('backup file[' + mmkv.getMMapID() + '] allKeys: ' + mmkv.getAllKeys()); 
    mmkv = MMKV.getBackedUpMMKVWithID('test/AES_reKey1', MMKV.SINGLE_PROCESS_MODE, "", backupRootDir); 
    LogUtil.i('backup file[' + mmkv.getMMapID() + '] allKeys: ' + mmkv.getAllKeys()); 
  } 
}

官网库里有demo的具体的代码,请参考:https://gitee.com/openharmony-tpc/MMKV/blob/master/entry/src/main/ets/pages/index.ets

分享
微博
QQ
微信
回复
2024-09-12 16:20:22
相关问题
HarmonyOS 使用MMKV库时遇到Warning
504浏览 • 1回复 待解决
HarmonyOS MapComponent使用问题
45浏览 • 1回复 待解决
HarmonyOS @Extend 使用问题
508浏览 • 1回复 待解决
HarmonyOS @ohos/mmkv 怎么更新到最新版本
651浏览 • 1回复 待解决
HarmonyOS关于API使用问题
396浏览 • 1回复 待解决
HarmonyOS 关于使用@BuilderParam问题
384浏览 • 1回复 待解决
HarmonyOS swiper组件使用问题
312浏览 • 1回复 待解决
HarmonyOS关于异步Promise使用问题
458浏览 • 1回复 待解决
HarmonyOS customdialog使用问题
645浏览 • 1回复 待解决
HarmonyOS textpicker使用问题
290浏览 • 1回复 待解决
HarmonyOS ProtoBuffer使用问题
501浏览 • 1回复 待解决
HarmonyOS Slide使用问题
300浏览 • 1回复 待解决
HarmonyOS onAreaChange使用问题
804浏览 • 1回复 待解决
HarmonyOS filePreview使用问题
350浏览 • 1回复 待解决
RichTextLayout使用问题
8029浏览 • 1回复 待解决
卸载重新安装时候,mmkv会报错
1129浏览 • 1回复 待解决
HarmonyOS Navigation 使用问题
432浏览 • 1回复 待解决