HarmonyOS 鸿蒙Next PersistentStorage存储数据后,退出关闭应用,重新打开应用后AppStorage.get获取不到数据,得到的是undefined

发布于 1周前 作者 yibo5220 来自 鸿蒙OS

HarmonyOS 鸿蒙Next PersistentStorage存储数据后,退出关闭应用,重新打开应用后AppStorage.get获取不到数据,得到的是undefined
https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/776/059/694/0030086000776059694.20250116154422.86953912674747029041881601759569:50001231000000:2800:BC0BD3604CC2986CAFF5FA889D046BAA2C0986CF753E53B066EA002D52322E35.png

https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/776/059/694/0030086000776059694.20250116154516.74484623562673037619250526835493:50001231000000:2800:1056527896404105148BA4C66837609D6A9D32C294D392BA7884CB19F002A4C2.png

https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/776/059/694/0030086000776059694.20250116154856.92395836953702513250040999843924:50001231000000:2800:DF90D1488896458AC73AD889BD2BF8F255E8CF0BC1C1006F413483EE59E32D4D.png

数据是设置上了,但是下次打开的时候获取仍然是undefined,我看其他小伙伴也有遇到这个问题的,说是勾选keep application data,我看也是勾上了的啊,为什么还是undefined


更多关于HarmonyOS 鸿蒙Next PersistentStorage存储数据后,退出关闭应用,重新打开应用后AppStorage.get获取不到数据,得到的是undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

1、PersistentStorage和UIContext相关联,需要在UIContext明确的时候才可以调用

2、在使用接口访问AppStorage中的属性之前需要调用PersistentStorage.persistProp。

可以参考如下代码做改造:

onWindowStageCreate(windowStage: window.WindowStage): void {
    // Main window is created, set main page for this ability
    hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onWindowStageCreate');

    windowStage.loadContent('pages/testTarget', (err) => {
      if (err.code) {
        hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? '');
        return;
      }
      hilog.info(0x0000, 'testTag', 'Succeeded in loading the content.');
    });

    let window = windowStage.getMainWindow()
    window.then(window => {
      let uicontext = window.getUIContext()
      uicontext.runScopedTask(() => {
        PersistentStorage.PersistProp('aProp2', 47);
        const path = AppStorage.get<number>('aProp2')
        if (path == 47) {
          console.log(`path is not OK`)
          AppStorage.setOrCreate("aProp2", 50)
        } else {
          console.log(`path is  OK`)
        }
      })
    })
}

更多关于HarmonyOS 鸿蒙Next PersistentStorage存储数据后,退出关闭应用,重新打开应用后AppStorage.get获取不到数据,得到的是undefined的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


针对HarmonyOS鸿蒙Next PersistentStorage存储数据后,退出关闭应用,重新打开应用后AppStorage.get获取不到数据的问题,可能的原因及解决方案如下:

  1. 存储路径或键名错误:

    • 确认在存储数据时使用的路径和键名与获取数据时使用的完全一致。任何微小的差异(如空格、大小写)都可能导致数据无法正确检索。
  2. 数据未正确存储:

    • 检查存储数据时的代码逻辑,确保数据确实被成功写入PersistentStorage。可以通过日志打印等方式验证存储操作是否执行成功。
  3. 存储权限问题:

    • 确认应用具有写入和读取PersistentStorage的权限。权限不足可能导致数据无法存储或读取。
  4. 应用重启后的数据恢复:

    • HarmonyOS在应用重启后可能需要特定的机制来恢复PersistentStorage中的数据。检查应用是否有实现相应的数据恢复逻辑。
  5. 存储限制或Bug:

    • 检查是否存在已知的存储限制或系统Bug,这可能需要查阅HarmonyOS的官方文档或社区论坛以获取更多信息。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部