赞
踩
上文学习了鸿蒙开发的组件状态,详细分析状态变量与UI渲染交互逻辑,本文将学习鸿蒙开发应用的状态管理。
上文分享的组件状态管理中装饰器仅能在页面内,即一个组件树上共享状态变量。如果要实现应用级的,或者多个页面的状态数据共享,就需要用到应用级别的状态管理的概念。管理应用拥有状态的装饰器支持应用级别的状态管理,可以观察不同页面,甚至不同UIAbility的状态变化,是应用内全局的状态管理。
LocalStorage是页面级的UI状态存储,通过@Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。LocalStorage也可以在UIAbility实例内,在页面间共享状态。
基本概念:
建立LocalStorage和自定义组件的联系,使用@LocalStorageProp(key)装饰组件内的变量,key标识了LocalStorage的属性。当自定义组件初始化的时候,@LocalStorageProp(key)装饰的变量会通过给定的key,绑定LocalStorage对应的属性,完成初始化。考虑到组初始化前LocalStorage实例中无法保证存在绑定属性,支持本地初始化。@LocalStorageProp(key)是和LocalStorage中key对应的属性建立单向数据同步,本地的修改永远不会同步回LocalStorage中,如果LocalStorage给定key的属性发生改变,改变会被同步给@LocalStorageProp,并覆盖掉本地的修改。
@LocalStorageProp初始化规则图示
使用场景:
@LocalStorageLink(key)是和LocalStorage中key对应的属性建立双向数据同步。
@LocalStorageLink初始化规则图示
使用场景:
AppStorage是应用全局的UI状态存储,是和应用的进程绑定的,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储。
@StorageProp初始化规则图示
@StorageLink初始化规则图示
PersistentStorage是应用程序中的可选单例对象。此对象的作用是持久化存储选定的AppStorage属性,以确保这些属性在应用程序重新启动时的值与应用程序关闭时的值相同。PersistentStorage将选定的AppStorage属性保留在设备磁盘上。应用程序通过API,以决定哪些AppStorage属性应借助PersistentStorage持久化。UI和业务逻辑不直接访问PersistentStorage中的属性,所有属性访问都是对AppStorage的访问,AppStorage中的更改会自动同步到PersistentStorage。
PersistentStorage和AppStorage中的属性建立双向同步。应用开发通常通过AppStorage访问PersistentStorage,另外还有一些接口可以用于管理持久化属性,但是业务逻辑始终是通过AppStorage获取和设置属性的。
PersistProp初始化流程:
使用场景:
Environment是ArkUI框架在应用程序启动时创建的单例对象。
使用场景:
注:PersistentStorage、Environment都是通过AppStorage与组件中绑定变量交互的,本身不直接交互
本文学习了鸿蒙开发应用的状态管理,与上文组件状态管理构成整个ArkUI框架提供的状态管理机制,其核心就是UI是状态的运行结果。下文学习UI渲染控制。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。