HarmonyOS 鸿蒙Next类似Android的SharedPreferences存储是什么?

发布于 1周前 作者 h691938207 最后一次编辑是 5天前 来自 鸿蒙OS

HarmonyOS 鸿蒙Next类似Android的SharedPreferences存储是什么?

preferences.has('startup', (err, val) => {
  if (err) {
    console.error(`Failed to check the key 'startup'. Code:${err.code}, message:${err.message}`);
    return;
  }
  if (val) {
    console.info("The key 'startup' is contained.");
  } else {
    console.info("The key 'startup' does not contain.");
    // 此处以此键值对不存在时写入数据为例
    try {
      preferences.put('startup', 'auto', (err) => {
        if (err) {
          console.error(`Failed to put data. Code:${err.code}, message:${err.message}`);
          return;
        }
        console.info('Succeeded in putting data.');
      });
    } catch (err) {
      console.error(`Failed to put data. Code: ${err.code},message:${err.message}`);
    }
  }
})
} catch (err) {
  console.error(`Failed to check the key 'startup'. Code:${err.code}, message:${err.message}`);
}

通过用户首选项实现数据持久化-应用数据持久化-ArkData(方舟数据管理)-应用框架 - 华为HarmonyOS开发者 (huawei.com)

我在代码中,尝试使用这个但有报错
Property 'has' does not exist on type 'typeof preferences'. <ArkTSCheck>


更多关于HarmonyOS 鸿蒙Next类似Android的SharedPreferences存储是什么?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html

2 回复

可以用await 来修饰,put数据和get数据可以参考如下代码:

async putPreferenceValue(key: string, value: preferences.ValueType){
  if (!this.preferences) {
    console.debug(`Preferences尚未初始化!`)
    return
  }
  try {
    // 写入数据
    await this.preferences.put(key, value)
    // 刷盘
    await this.preferences.flush()
    console.debug(`保存Preferences[${key} = ${value}]成功`)
  } catch (e) {
    console.debug(`保存Preferences[${key} = ${value}]失败`, JSON.stringify(e))
  }
}
async getPreferenceValue(key: string, defaultValue: preferences.ValueType){
  if (!this.preferences) {
    console.debug(`Preferences尚未初始化!`)
    return
  }
  try {
    // 读数据
    let value = await this.preferences.get(key, defaultValue)
    console.debug(`读取Preferences[${key} = ${value}]成功`)
    return value
  } catch (e) {
    console.debug(`读取Preferences[${key}]失败`, JSON.stringify(e))
    return
  }
}
 

目前写法需要这样处理

getsyncputSync应该满足您的需求,文档如下:

https://developer.huawei.com/consumer/cn/doc/harmonyos-references-V13/js-apis-data-sendablepreferences-V13#getsync

更多关于HarmonyOS 鸿蒙Next类似Android的SharedPreferences存储是什么?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next中,类似于Android的SharedPreferences存储机制是SimpleKVStore

SimpleKVStore是鸿蒙系统提供的一种轻量级的键值对存储方式,它允许开发者以简单的键值对形式存储和读取数据。这种存储方式非常适合用于存储应用程序的配置信息、用户偏好设置等轻量级数据。

与Android的SharedPreferences类似,SimpleKVStore也支持多种数据类型,包括整型、浮点型、字符串等,并且提供了同步和异步的API接口,以满足不同场景下的数据存储需求。

在使用SimpleKVStore时,开发者需要先获取一个KVStore实例,然后通过该实例的put、get等方法来存储和读取数据。此外,SimpleKVStore还支持数据监听功能,可以监听数据的变化并做出相应处理。

需要注意的是,SimpleKVStore的存储位置是在设备的内部存储空间中,因此它的访问速度较快,但存储空间相对有限。因此,在存储大量数据时,开发者需要考虑使用其他存储方式,如文件存储或数据库存储等。

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

回到顶部