鸿蒙开发存储方案深度解析:LocalStorage、AppStorage、PersistentStorage、首选项怎么选?

101 阅读2分钟

——每天分享一个知识点 ——

在鸿蒙应用开发中,状态管理与数据持久化是核心内容

我尽量用最简单的语言帮助大家理解它们。

  1. LocalStorage:页面级临时存储

定义:页面 / 组件树内的内存存储,仅在当前页面(或组件子树)有效,页面销毁后数据清空。 原理:基于 ArkUI 的组件树上下文,每个页面可创建独立的LocalStorage实例,子组件通过@LocalStorageProp/@LocalStorageLink关联状态。

  1. AppStorage:应用级状态管理

定义:应用全局的内存状态池,贯穿应用生命周期,所有页面 / 组件可共享数据。 原理:鸿蒙的状态管理核心,数据存储在内存中,通过@StorageProp(单向绑定)、@StorageLink(双向绑定)实现组件与状态的联动。 关键:AppStorage 本身不持久化(应用重启后数据丢失),需配合 PersistentStorage 实现持久化。

  1. PersistentStorage:AppStorage 的持久化扩展

定义:将 AppStorage 中的指定键持久化到磁盘,应用重启后自动恢复这些键的值到 AppStorage。 原理:依赖 AppStorage,通过PersistentStorage.persistProp将 AppStorage 的键 “标记” 为持久化,数据存储在应用沙盒目录。 限制:仅支持基本数据类型(string、number、boolean、enum),复杂类型需手动序列化(如JSON.stringify)。

  1. 首选项(Preferences):独立键值对持久化

定义:系统提供的独立键值对存储服务,不依赖状态管理,直接操作磁盘文件,支持复杂数据类型(需序列化)。 原理:通过preferences模块实现,数据存储在应用沙盒的preferences目录。

简单总结: LocalStorage:页面 内存级别 AppStorage:应用 内存级别 PersistentStorage:应用持久依赖AppStorage Preferences:应用 持久 独立

欢迎大家一起探讨 评论区见