HarmonyOS 鸿蒙Next ohos.data.preferences 数据存储,使用preferences 单例模式

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

HarmonyOS 鸿蒙Next ohos.data.preferences 数据存储,使用preferences 单例模式

preferences 数据存储,需要搭配context使用,能否提供全局单例模式的样例代码。
App内部权限校验,抽离成公用方法,需要用到preferences 取出本地数据,但是需要额外传递context,重新初始化操作对象,才能执行存取操作。
 

3 回复
可以写一个GlobalContext类,在EntryAbility的时候初始化preferences ,并存入进去,然后使用的时候,取出来使用即可
export class GlobalContext {
  private constructor() {
  }

private static instance: GlobalContext; private _objects = new Map<string, Object>();

public static getContext(): GlobalContext { if (!GlobalContext.instance) { GlobalContext.instance = new GlobalContext(); } return GlobalContext.instance; }

getObject(value: string): Object | undefined { return this._objects.get(value); }

setObject(key: string, objectClass: Object): void { this._objects.set(key, objectClass); } }

EntryAbility: let productPreferences: Function = (() => { let preferences: Promise<dataPreferences.Preferences> = dataPreferences.getPreferences(context,key); return preferences; }); GlobalContext.getContext().setObject(‘getProductPreferences’, preferences); >

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


我目前做法是在 Ability 中进行初始化的,首次传入 context 就行。

在HarmonyOS(鸿蒙)系统中,ohos.data.preferences 提供了轻量级的数据存储解决方案,类似于其他操作系统中的键值对存储机制。使用 preferences 的单例模式可以确保应用中的数据存储访问是线程安全的,并且避免重复创建实例带来的资源开销。

在鸿蒙中,可以通过以下方式获取 preferences 的单例对象:

import ohos.data.preferences.Preferences;
import ohos.data.preferences.PreferencesFactory;

// 获取Preferences单例对象
Preferences preferences = PreferencesFactory.createUserPreferences(context, "your_preferences_file_name", Preferences.MODE_PRIVATE);

其中,context 是当前应用或模块的上下文,"your_preferences_file_name" 是存储文件的名称(不包含文件扩展名),Preferences.MODE_PRIVATE 表示文件是私有的,仅当前应用可访问。

获取到 preferences 对象后,即可通过 putStringgetInt 等方法存储和读取数据。例如:

// 存储数据
preferences.putString("key_string", "value_string");

// 读取数据
String value = preferences.getString("key_string", "default_value");

注意,preferences 的单例模式确保了全局唯一性,但需要在适当的时候(如应用退出时)手动关闭或清理资源,以保证内存和资源的有效管理。

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

回到顶部