如题描述,使用PersistentStorage:持久化存储UI状态存储业务配置信息,应用重启后配置信息未保存,还原成初始化数据。

参看案例:PersistentStorage:持久化存储UI状态

操作步骤如下:

1、应用启动,在EntryAbility类发onCreate方法中初始化持久化数据:

 private initNetworkConfig() {
    PersistentStorage.PersistProp<string>(KEY_NETWORK_CONFIRM_IP, ADDRESS)
    PersistentStorage.PersistProp<number>(KEY_NETWORK_CONFIRM_POST, POST)
  }

2、在业务操作之前先获取相关的数据

 @StorageLink('network_ip') ip : string = '';
 @StorageLink('network_post') post : number = 0;

 this.ip = AppStorage.Get<string>(KEY_NETWORK_CONFIRM_IP);
 this.post = AppStorage.Get<number>(KEY_NETWORK_CONFIRM_POST);

从上面的代码测试看,可以正常获取到存储的数据,数据值为初始化时的ADDRESS、POST定义的数值。

3、在一个弹窗中修改数据,弹窗内通过@Link装饰器定义变量

  @Link ip: string //  IP地址
  @Link post: number // 端口

// 点击确认后修改变量
  this.ip = this.tempIP
  this.post = parseInt(this.tempPost)

4、通过回调可以确认ip、post都已经被修改,查看当前界面上修改结果也正确。

5、重启应用,在界面上获取ip、post还是未修改前的默认数值。

请问:PersistentStorage在OH3.2release API9版本上无效?还是这里的写法有问题?

有其他类似的轻量级持久化的方法吗(除数据库外)?

Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐