HarmonyOS鸿蒙Next中ohos.data.preferences数据存储

HarmonyOS鸿蒙Next中ohos.data.preferences数据存储 使用 preferences 存储数据,在存入之后,再次进入 app,有一定几率获取不到存储数据,也就是存储数据丢失。

实现方式:

  1. App 登陆之后存储用户信息,登录之后返回,正常使用存储信息。
  2. App 杀掉进程,再次进入,会出现读取存储异常问题。
3 回复

没有持久化,首选项的数据是存在缓存里的,杀点后台就没了,尝试flush。

private setCacheData(cacheStr: string) {
  this.preferences?.putSync('AHCommentBarEmojiKey', cacheStr);
  console.log('cui== 存数据 == ' + cacheStr)
  this.preferences?.flush((err: BusinessError) => {
    if (err) {
      console.error(`Failed to flush. Code:${err.code}, message:${err.message}`);
      return;
    }
    console.info('Succeeded in flushing.');
  })
}

更多关于HarmonyOS鸿蒙Next中ohos.data.preferences数据存储的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,ohos.data.preferences模块用于轻量级数据存储,支持存储键值对数据。它主要用于存储应用配置、用户偏好设置等小规模数据。Preferences实例是线程安全的,支持多线程并发访问。

Preferences数据存储在应用沙盒目录下,每个应用有独立的存储空间。数据以XML文件形式存储,文件名为{name}.xml,其中{name}为创建Preferences实例时指定的名称。

主要接口包括:

  1. getPreferences(context: Context, name: string): Preferences:获取或创建Preferences实例。
  2. putString(key: string, value: string): void:存储字符串数据。
  3. getString(key: string, defaultValue: string): string:获取字符串数据。
  4. putInt(key: string, value: number): void:存储整型数据。
  5. getInt(key: string, defaultValue: number): number:获取整型数据。
  6. putBoolean(key: string, value: boolean): void:存储布尔数据。
  7. getBoolean(key: string, defaultValue: boolean): boolean:获取布尔数据。
  8. flush(): void:将数据写入文件。
  9. clear(): void:清空所有数据。

Preferences支持异步操作,可通过asyncawait关键字实现。数据存储是持久化的,应用重启后数据仍然存在。

在HarmonyOS鸿蒙Next中,ohos.data.preferences 提供了轻量级的键值对数据存储功能,适用于存储应用的简单配置和用户偏好设置。主要类为 Preferences,通过 getPreferences 方法获取实例。数据以 XML 文件形式存储,支持基本数据类型(如字符串、整型、布尔等)。数据操作包括 putgetdelete 等方法,支持异步和同步操作。使用 flush 方法将数据持久化。Preferences 适用于小规模、非敏感数据的存储。

回到顶部