安卓开发者自学鸿蒙开发3持久化/数据与UI绑定
AppStorage是应用全局状态管理器,数据存储于内存中,常见的如全局的黑暗模式,StorageLink是用来绑定AppStorage的键到ui上的工具,省去了用户手写代码的无聊过程,PersistentStorage可以绑定AppStorage的键,自动持久化到磁盘,同时支持多设备同步,也省去了无聊的手写代码过程,这个点上真的是非常方便这个代码直接持久化绑定了AppStorage里面的Them
AppStorage,PersistentStorage与StorageLink
AppStorage是应用全局状态管理器,数据存储于内存中,常见的如全局的黑暗模式,StorageLink是用来绑定AppStorage的键到ui上的工具,省去了用户手写代码的无聊过程,PersistentStorage可以绑定AppStorage的键,自动持久化到磁盘,同时支持多设备同步,也省去了无聊的手写代码过程,这个点上真的是非常方便
PersistentStorage.persistProp(‘theme’, ‘system’); 这个代码直接持久化绑定了AppStorage里面的Theme的值,所以不需要AppStorage再写一遍存储逻辑了
// 1. 初始化函数
function initApp() {
// 设置持久化属性
PersistentStorage.persistProp('userInput', '初始值');
}
// 2. 主页面组件
@Entry
@Component
struct SimplestDemo {
// 双向绑定到持久化属性
@StorageLink('userInput') input: string = '';
aboutToAppear() {
initApp(); // 初始化应用状态
}
build() {
Column() {
// 显示当前值
Text(`当前值: ${this.input}`)
// 输入框
TextInput({ text: this.input })
.onChange((value: string) => {
this.input = value;//这里会同时持久化到磁盘里面
})
// 重置按钮
Button('重置为默认值')
.onClick(() => {
this.input = '初始值';
})
}
}
}
state
页面或组件内部的数据,用于绑定到UI
数据存储方案对比
PersistentStorage/Preferences/relationalStore/localStorage /AppStorage
| 方案 | 数据位置 | 生命周期 | 数据类型支持 | 典型应用场景 | 性能特点 |
|---|---|---|---|---|---|
| AppStorage | 内存 | 应用运行时 | 任意类型 | 全局状态共享 | 高速访问 |
| PersistentStorage | 内存+磁盘 | 应用重启后保持 | 基本类型(string/number/boolean) | 主题/语言设置等小数据持久化 | 自动同步,中等性能 |
| Preferences | 磁盘 | 持久化存储 | 可序列化数据 | 用户配置、登录令牌等结构化数据 | 异步操作,适合中小数据 |
| relationalStore | 磁盘 | 持久化存储 | 结构化关系数据 | 通讯录、消息记录等复杂数据 | 支持SQL,事务处理 |
| localStorage | 内存 | 页面生命周期 | 任意类型 | 页面内组件间状态共享 | 快速,页面关闭即释放 |
| 文件存储 | 磁盘 | 持久化存储 | 任意二进制/文本 | 图片、音视频、大文件 | 灵活,适合大数据 |
LocalStorage 只限在同一个uiability里面共享数据,跨page需要使用const storage = LocalStorage.getShared();来获取
简单全局配置的多设备同步
// 1. 启用分布式同步(只需一行)
PersistentStorage.persistProp('theme', 'system', true); // 第三个参数 true 启用同步
// 2. 组件中使用
@Entry
@Component
struct ThemeSetting {
// 双向绑定(自动同步)
@StorageLink('theme') theme: string = 'system';
//3.权限配置(module.json5)
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.DISTRIBUTED_DATASYNC",
"reason": "同步主题设置"
}
]
}
}
为武汉地区的开发者提供学习、交流和合作的平台。社区聚集了众多技术爱好者和专业人士,涵盖了多个领域,包括人工智能、大数据、云计算、区块链等。社区定期举办技术分享、培训和活动,为开发者提供更多的学习和交流机会。
更多推荐



所有评论(0)