在HarmonyOS中如何正确地使用PersistentStorage来保存用户数据?

阅读 695
1 个回答
  • 想要持久化保存的变量必须在项目主页声明,要在各个组件以及 Entry 的外部,可以直接放在 import 语句下方,每一个都需要声明。不做此项操作将无法持久化保存数据。修改数据使用 AppStorage.set,而非 PersistentStorage.persistProp。因为 PersistentStorage 与 UIContext 相关联,需要在 UIContext 明确的时候才可以调用,可以通过在 runScopedTask 里明确上下文。如果没有在 UIContext 明确的地方调用,将导致无法持久化数据。
    例如在 onWindowStageCreate 中可以这样调用:
windowStage.loadContent('pages/Index', (err, data) => {
if (err.code) {
hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err)?? '');
return;
}
let window = windowStage.getMainWindow();
window.then(win => {
let uiContext = win.getUIContext();
uiContext.runScopedTask(() => {
PersistentStorage.persistProp('aProp', 47);
AppStorage.setOrCreate("aProp", 50)
console.log(11 $${AppStorage.get('aProp')})
})
});
hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data)?? '');
});
  • 如果只是想读取数据,用户首选项(@ohos.data.preferences)为应用提供 Key-Value 键值型的数据处理能力,支持应用持久化。对于存储用户登录信息,可以根据具体的数据类型、读写需求和应用场景选择使用 PersistentStorage 或 Preference。如果需要存储的数据较为复杂,包含嵌套对象或数组,建议使用 PersistentStorage;如果需要频繁读取和写入数据,且数据较为简单,建议使用 Preference。如果需要在应用退出后重新启动时保持特定属性的一致性,建议使用 PersistentStorage;如果需要存储用户首选项数据,建议使用 Preference。

本文参与了 【 HarmonyOS NEXT 技术问答冲榜,等你来战!】欢迎正在阅读的你也加入。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进