【鸿蒙开发】基础干货篇--6 “超简单持久化存储PersistentStorage”
系列文章目录
【鸿蒙开发】鸿蒙开发基础干货篇–1
【鸿蒙开发】基础干货篇–2 小白入门手册(内含Dev Eco安装教程和汉化插件安装)
【鸿蒙开发】基础干货篇–3 小白入门手册 (内含模拟器保姆级安装使用教程)
【鸿蒙开发】基础干货篇–4 小白入门手册(内含Stage模型工程目录结构和UIAbility 组件详解)
【鸿蒙开发】基础干货篇–5 “一篇带你掌握应用状态”
【鸿蒙开发】“一篇带你掌握HAP、HAR、HSP”
文章目录
- 系列文章目录
- 前言
- 一、PersistentStorage是什么?
- 二、使用场景
- 1.从AppStorage中访问PersistentStorage初始化的属性
- 2.在PersistentStorage之后访问AppStorage中的属性
- 三、注意事项
- 总结
前言
前一篇介绍的LocalStorage和AppStorage都是运行时的内存,但是在应用退出再次启动后,依然能保存选定的结果,是应用开发中十分常见的现象,这就需要用到PersistentStorage。
一、PersistentStorage是什么?
PersistentStorage是应用程序中的可选单例对象。此对象的作用是持久化存储选定的AppStorage属性,以确保这些属性在应用程序重新启动时的值与应用程序关闭时的值相同。
原理解释:PersistentStorage将选定的AppStorage属性保留在设备磁盘上。UI和业务逻辑不直接访问PersistentStorage中的属性,所有属性访问都是对AppStorage的访问,AppStorage中的更改会自动同步到PersistentStorage。
二、使用场景
1.从AppStorage中访问PersistentStorage初始化的属性
1.初始化PersistentStorage:
PersistentStorage.persistProp('aProp', 47);
2.在AppStorage获取对应属性:
AppStorage.get<number>('aProp'); // returns 47
//或者在组件内部定义:
@StorageLink('aProp') aProp: number = 48;
2.在PersistentStorage之后访问AppStorage中的属性
开发者可以先判断是否需要覆盖上一次保存在PersistentStorage中的值,如果需要覆盖,再调用AppStorage的接口进行修改,如果不需要覆盖,则不调用AppStorage的接口。
代码如下(示例):
PersistentStorage.persistProp('aProp', 48);
if (AppStorage.get('aProp') > 50) {
// 如果PersistentStorage存储的值超过50,设置为47
AppStorage.setOrCreate('aProp',47);
}
三、注意事项
- 可以被JSON.stringify()和JSON.parse()重构的对象,但是对象中的成员方法不支持持久化。
- 不支持嵌套对象(对象数组,对象的属性是对象等)。因为目前框架无法检测AppStorage中嵌套对象(包括数组)值的变化,所以无法写回到PersistentStorage中。
- PersistentStorage和UI实例相关联,持久化操作需要在UI实例初始化成功后(即loadContent传入的回调被调用时)才可以被调用,早于该时机调用会导致持久化失败。
- 在调用PersistentStorage.persistProp或者persistProps之前使用接口访问AppStorage中的属性是错误的,因为这样的调用顺序会丢失上一次应用程序运行中的属性值。
- 我们应该避免以下两种情况:持久化大型数据集、持久化经常变化的变量。
总结
以上就是今天要讲的内容,本文仅仅简单介绍了PersistentStorage的使用。大家努力学习努力工作的同时也要好好吃饭喔~
我今天中午回去吃茄汁米粉~~