持久化存储2025-08-19

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
  }
}

  • 针对对象类型的持久化就需要用到关系型数据库了
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容