ArkTs之状态管理五

24 阅读2分钟

我们在前面两个篇章中介绍了LocalStorage和AppStorage两个管理应用拥有的状态,但是用过的都知道这两个有致命的缺陷,那就是如果我们将我们的应用杀死那么我们再次打开这个应用的时候我们存储的数据也就没了。因为这两个都是运行时的内存,如果我们想要应用退出后依然能保存选定的结果,那么就引出我们本篇的主角"PersistentStorage"。我们先来个简单的介绍

介绍:

PersistentStorage是应用程序中的可选单例对象。此对象的作用是持久化存储选定的AppStorage属性,以确保这些属性在应用程序重新启动时的值与应用程序关闭时的值相同。

PersistentStorage提供状态变量持久化的能力,但是需要注意,其持久化和读回UI的能力都需要依赖AppStorage。

注意:

UI和业务逻辑不直接访问PersistentStorage中的属性,所有属性访问都是对AppStorage的访问,AppStorage中的更改会自动同步到PersistentStorage,也就是说,我们和之前访问AppStorage是一样的,只不过需要提前使用PersistentStorage来声明

限制条件:

PersistentStorage允许的类型和值有:number, string, boolean, enum 等简单类型。可以被JSON.stringify()和JSON.parse()重构的对象,但是对象中的成员方法不支持持久化。还有的限制条件可以翻阅官网查看:developer.huawei.com/consumer/cn…

 

用法:

PersistentStorage.PersistProp(key: string,  defaultValue: T): void    

将key中对应的属性持久化到文件中,如果我们想要获取key中存储的值。那么如上介绍,我们需要用到AppStorage来获取这个key中的值  

 

     演示:

image.png

image.png          

    PersistentStorage.persistProp("One", "0")  
  
@Entry  
@Component  
**struct** PersistentStoragePage {  
  @State message: string = ""  
  
  aboutToAppear(): void {  
    **this**.message = AppStorage.get("One")!  
  }  
  build() {  
    Column() {  
      Text(**this**.message)  
        .fontSize(32)  
    }  
  }  
}

PersistentStorage的用法就是如此简单,只是向磁盘中存储的数据,在PersistentStorage中还有其他的方法,大家可以去试一试

 

Harmony OS  NEXT   API12

本次就暂时介绍这么多

谢谢各位的观看,有错误不足的地方, 本人乐于接受各位的意见