昆山住房和城乡建设部网站,手机上怎么设计logo,企查查官网查询,wordpress添加下载链接系列文章目录
1.HarmonyOS | 状态管理(一) | State装饰器 2.HarmonyOS | 状态管理(二) | Prop装饰器 3.HarmonyOS | 状态管理(三) | Link装饰器 4.HarmonyOS | 状态管理(四) | Provide和Consume装饰器 5.HarmonyOS | 状态管理(五) | Observed装饰器和ObjectLink装饰器 6.Harmo…系列文章目录
1.HarmonyOS | 状态管理(一) | State装饰器 2.HarmonyOS | 状态管理(二) | Prop装饰器 3.HarmonyOS | 状态管理(三) | Link装饰器 4.HarmonyOS | 状态管理(四) | Provide和Consume装饰器 5.HarmonyOS | 状态管理(五) | Observed装饰器和ObjectLink装饰器 6.HarmonyOS | 状态管理(六) | LocalStorage(页面级UI状态存储) 7.HarmonyOS | 状态管理(七) | AppStorage(应用级UI状态存储) 文章目录 系列文章目录前言一、PersistentStorage的作用是什么二、PersistentStorage的特性三、限制条件四、使用场景1.从AppStorage中访问PersistentStorage初始化的属性2.在PersistentStorage之前访问AppStorage中的属性3.在PersistentStorage之后访问AppStorage中的属性 总结 前言
上一篇我们讲到了应用级UI状态存储(AppStorage),本篇我们来讲下持久化存储UI状态(PersistentStorage) 一、PersistentStorage的作用是什么
PersistentStorage的作用是应用退出再次启动后依然能保存选定的结果。
二、PersistentStorage的特性 PersistentStorage将选定的AppStorage属性保留在设备磁盘上。 应用程序通过API以决定哪些AppStorage属性应借助PersistentStorage持久化。 UI和业务逻辑不直接访问PersistentStorage中的属性所有属性访问都是对AppStorage的访问AppStorage中的更改会自动同步到PersistentStorage。 PersistentStorage和AppStorage中的属性建立双向同步。应用开发通常通过AppStorage访问PersistentStorage。
三、限制条件
PersistentStorage允许的类型和值有
number, string, boolean, enum 等简单类型。可以被JSON.stringify()和JSON.parse()重构的对象。例如Date, Map, Set等内置类型则不支持以及对象的属性方法不支持持久化。
PersistentStorage不允许的类型和值有
不支持嵌套对象对象数组对象的属性是对象等。因为目前框架无法检测AppStorage中嵌套对象包括数组值的变化所以无法写回到PersistentStorage中。不支持undefined 和 null 。
持久化数据是一个相对缓慢的操作应用程序应避免以下情况
持久化大型数据集。持久化经常变化的变量。
PersistentStorage的持久化变量最好是小于2kb的数据不要大量的数据持久化因为PersistentStorage写入磁盘的操作是同步的大量的数据本地化读写会同步在UI线程中执行影响UI渲染性能。如果开发者需要存储大量的数据建议使用数据库api。
PersistentStorage只能在UI页面内使用否则将无法持久化数据。
四、使用场景
1.从AppStorage中访问PersistentStorage初始化的属性
PersistentStorage.PersistProp(aProp, 47);Entry
Component
struct PersistentStoragePage {StorageLink(aProp) aProp: number 48build() {Row() {Column() {// 应用退出时会保存当前结果。重新启动后会显示上一次的保存结果Text(${this.aProp}).onClick(() {this.aProp 1;})}}}
}2.在PersistentStorage之前访问AppStorage中的属性
在调用PersistentStorage.PersistProp或者PersistProps之前使用接口访问AppStorage中的属性是错误的因为这样的调用顺序会丢失上一次应用程序运行中的属性值。
let aProp AppStorage.SetOrCreate(aProp, 47);
PersistentStorage.PersistProp(aProp, 48);3.在PersistentStorage之后访问AppStorage中的属性
开发者可以先判断是否需要覆盖上一次保存在PersistentStorage中的值如果需要覆盖再调用AppStorage的接口进行修改如果不需要覆盖则不调用AppStorage的接口。
PersistentStorage.PersistProp(aProp, 48);
if (AppStorage.Get(aProp) 50) {// 如果PersistentStorage存储的值超过50设置为47AppStorage.SetOrCreate(aProp,47);
}总结
PersistentStorage的作用是应用退出再次启动后依然能保存选定的结果。