鸿蒙状态存储区别
鸿蒙操作系统(HarmonyOS)提供了几种不同的状态存储机制,以满足不同层次和需求的数据共享和持久化。以下是鸿蒙状态存储的主要区别:
-
LocalStorage:这是页面级别的UI状态存储,主要用于页面内以及UIAbility实例内、页面间的状态共享。LocalStorage通过@Entry装饰器接收的参数,允许在页面内共享同一个LocalStorage实例。此外,LocalStorage是ArkTS为构建页面级别状态变量提供存储的内存内“数据库”,从API version 9开始支持。LocalStorage通常用于UIAbility内、页面间的状态共享,适合于不需要持久化存储的场景151014。
-
AppStorage:与LocalStorage不同,AppStorage是应用全局的UI状态存储,与应用的进程绑定,并在应用程序启动时由UI框架创建。它为应用程序UI状态属性提供中央存储,可以在整个应用中共享状态数据,支持应用的主线程内多个UIAbility实例间的状态共享。AppStorage是单例,其属性在应用运行过程中保留,并且可以与UI组件同步,在应用业务逻辑中被访问489。
-
PersistentStorage:PersistentStorage是应用程序中的可选单例对象,用于持久化存储选定的AppStorage属性。这样,即使应用程序重新启动,这些属性的值也能保持与关闭时相同。PersistentStorage将这些属性存储在设备的磁盘上,通过API可以控制哪些AppStorage属性需要持久化13。
-
用户首选项(Preferences):通常用于保存应用的配置信息,数据以文本形式保存在设备中,并在应用使用过程中加载到内存中,提供快速高效的访问速度。但由于其加载数据到内存的特性,不适合存储大量数据,更适用于保存用户的个性化设置等场景37。
-
键值型数据库(KV-Store):这是一种非关系型数据库,数据以“键值”对的形式组织、索引和存储。它适合于数据关系和业务关系较少的业务数据存储,并且在分布式场景中减少了数据库版本兼容问题和数据同步冲突解决的复杂度7。
通过这些不同的状态存储机制,HarmonyOS能够满足从页面级别到应用全局级别的状态管理需求,同时也支持数据的持久化存储和高效访问。开发者可以根据应用的具体需求和场景,选择最合适的状态存储解决方案。
LocalStorage1 | 页面级状态共享 页面级UI状态存储,用于UIAbility内、页面间的状态共享。 |
AppStorage1 | 应用级状态共享 特殊的单例LocalStorage对象,为应用程序UI状态属性提供中央存储。 |
PersistentStorage1 | 持久化状态存储 与AppStorage配合使用,确保属性在应用程序重新启动时的值与关闭时相同。 |
用户首选项存储3 | 用户个性化设置存储 将数据存到内存,适用于保存用户的个性化设置等。 |
键值型数据库7 | 业务数据存储 非关系型数据库,适合少数据关系和业务关系的业务数据存储。 |
关系型数据库7 | 复杂数据关系存储 用于需要复杂数据关系管理的业务数据存储。 |
页面级状态存储 页面内及页面间UI状态共享。 | |
应用级状态存储 提供应用UI状态属性的中央存储。 | |
持久化状态存储 配合AppStorage使用,确保状态重启后一致。 | |
LocalStorage1 | 页面级状态存储 页面级UI状态存储,用于UIAbility内、页面间的状态共享。 |
AppStorage1 | 应用级状态存储 特殊的单例LocalStorage对象,为应用程序UI状态属性提供中央存储。 |
PersistentStorage1 | 持久化状态存储 与AppStorage配合使用,确保属性在应用程序重新启动时的值与关闭时相同。 |
用户首选项7 | 配置信息存储 通常用于保存应用的配置信息,数据通过文本形式保存在设备中。 |
键值型数据库7 | 非关系型数据库 数据以“键值”对的形式进行组织、索引和存储,适合业务数据存储。 |