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
280浏览 • 1回复 待解决
HarmonyOS @ohos/mmkv 怎么更新到最新版本
402浏览 • 1回复 待解决
HarmonyOS @Extend 使用问题
331浏览 • 1回复 待解决
HarmonyOS swiper组件使用问题
113浏览 • 1回复 待解决
HarmonyOS 关于使用@BuilderParam问题
176浏览 • 1回复 待解决
HarmonyOS关于API使用问题
247浏览 • 1回复 待解决
HarmonyOS RichEditor 使用问题
347浏览 • 1回复 待解决
HarmonyOS soundpool使用问题
286浏览 • 1回复 待解决
HarmonyOS resourceManager使用问题
294浏览 • 1回复 待解决
HarmonyOS Navigation使用问题
268浏览 • 1回复 待解决
HarmonyOS Navigation 使用问题
296浏览 • 1回复 待解决
HarmonyOS websocket使用问题
54浏览 • 1回复 待解决
HarmonyOS lottie使用问题
215浏览 • 1回复 待解决
HarmonyOS地图使用问题
198浏览 • 1回复 待解决
卸载重新安装时候,mmkv会报错
956浏览 • 1回复 待解决
HarmonyOS关于异步Promise使用问题
293浏览 • 1回复 待解决
HarmonyOS filePreview使用问题
201浏览 • 1回复 待解决
HarmonyOS onAreaChange使用问题
543浏览 • 1回复 待解决
HarmonyOS ProtoBuffer使用问题
274浏览 • 1回复 待解决
HarmonyOS customdialog使用问题
291浏览 • 1回复 待解决
HarmonyOS Slide使用问题
120浏览 • 1回复 待解决
HarmonyOS textpicker使用问题
160浏览 • 1回复 待解决