hsp & har 不支持采用PersistentStorage 或者AppStorage 持久化,只有entry 才支持
持久化参考:通常在类的的外部声明初始化
///定义
PersistentStorage.persistProp('aProp', 47);
@Entry
@Component
struct Index {
@State message: string = 'Hello World';
///关联映射
@StorageLink('aProp') aProp: number = 48;
aboutToAppear: void {
/// 也可以把aProp 声明成普通变量,页面初始化的到这里的时候手动赋值
// this.aProp = AppStorage.get<number>('aProp');
}
build() {
Row() {
Column() {
Text(this.message)
// 应用退出时会保存当前结果。重新启动后,会显示上一次的保存结果
// 未修改时默认值为47
Text(`${this.aProp}`)
.onClick(() => {
///自动持久化到本地
this.aProp += 1;
})
}
}
}
}
对于hsp 或者har 的持久化场景:
- 针对非对象数据,比如基本数据类型:ValueType = number | string | boolean | Array<number> | Array<string> | Array<boolean> | Uint8Array | object | bigint;
可以采用preferences 的方法
import preferences from '@ohos.data.preferences';
import { Context } from '@kit.AbilityKit';
import { ValueType } from '@kit.ArkData';
export namespace DefaultDataCenter {
export async function saveOptions(context: Context, key: string, value: ValueType) {
//filter_options 是存储的文件名,可以自定义
const prefs = await preferences.getPreferences(context, 'filter_options')
await prefs.put(key, value)
await prefs.flush()
}
export async function loadOptions<T>(context: Context, key:string): Promise<T |undefined> {
const prefs = await preferences.getPreferences(context, 'filter_options')
const value = await prefs.get(key, undefined)
return value as T|undefined
}
}
- 针对对象类型的持久化就需要用到关系型数据库了