多线程或者多har包情况下可使用sendablePreferences,参考示例如下:import { Context } from '@kit.AbilityKit'; import { sendablePreferences } from '@kit.ArkData'; import { lang } from '@kit.ArkTS'; export class PreferenceUtil { private pref: sendablePreferences.Preferences | undefined = undefined private static instance: PreferenceUtil; public static getInstance(): PreferenceUtil { if (PreferenceUtil.instance == null) { PreferenceUtil.instance = new PreferenceUtil(); console.debug('PreferenceUtil getInstance new ') } return PreferenceUtil.instance; } loadPreference(context: Context, storeName: string) { try { // 加载preferences this.pref = sendablePreferences.getPreferencesSync(context, { name: storeName }) console.debug(`加载Preferences成功`) } catch (e) { console.info(`加载Preferences失败`, JSON.stringify(e)) } } async putPreferenceValue(key: string, value: lang.ISendable) { if (!this.pref) { console.debug(`Preferences 尚未初始化!`) return } try { // 写入数据 this.pref.putSync(key, value) // 刷盘 await this.pref.flush() console.debug(`保存Preferences[${key} = ${value}]成功`) } catch (e) { console.debug(`保存Preferences[${key} = ${value}]失败`, JSON.stringify(e)) } } async getPreferenceValue(key: string, defaultValue: lang.ISendable) { if (!this.pref) { console.debug(`Preferences 尚未初始化!`) return } try { // 读数据 let value = this.pref.getSync(key, defaultValue) console.debug(`读取Preferences[${key} = ${value}]成功`) return value } catch (e) { console.debug(`读取Preferences[${key}]失败`, JSON.stringify(e)) return } } }只要在启动的时候初始化一次就可以了。onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { hilog.info(0x0000, 'testTag', '%{public}s', 'Ability onCreate'); PreferenceUtil.getInstance().loadPreference(this.context,'moreStore') }
多线程或者多har包情况下可使用sendablePreferences,参考示例如下:
只要在启动的时候初始化一次就可以了。