安卓开发者自学鸿蒙开发3持久化/数据与UI绑定

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": "同步主题设置"}]}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93859.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

GitHub宕机生存指南:从应急协作到高可用架构设计

GitHub宕机生存指南:从应急协作到高可用架构设计 摘要: GitHub作为全球开发者的协作中心,其服务稳定性至关重要。然而,任何在线服务都无法保证100%的可用性。本文深入探讨了当GitHub意外宕机时,开发团队应如何应对。我…

机器学习算法篇(十三)------词向量转化的算法思想详解与基于词向量转换的文本数据处理的好评差评分类实战(NPL基础实战)

目录 一、词向量原理介绍 (1). 词向量的核心概念 (2). 传统文本表示的局限性 1. 独热编码(One-Hot Encoding) 2. 词袋模型(Bag of Words) 3. TF-IDF (3). 词向量的核心原理 (4). 主流词向量模型 1. Word2Vec(20…

JS自定义函数(2)

1. 变量的作用域全局变量定义:在函数外声明的变量作用范围:在整个JS文档中生效生命周期:页面关闭时销毁局部变量定义:在函数内用 var 声明的变量作用范围:只能在函数内部使用生命周期:函数执行完毕时销毁作…

【数据集】Argoverse 数据集:自动驾驶研究的强大基石

Argoverse数据集:自动驾驶研究的强大基石 在自动驾驶技术蓬勃发展的当下,高质量的数据集对于推动相关算法研究和模型训练起着举足轻重的作用。Argoverse 数据集便是其中的佼佼者,它为自动驾驶领域的众多任务提供了丰富且优质的数据资源。 一、…

--- 哈希表和哈希冲突 ---

哈希(散列)方法是对插入的数据通过哈希函数计算出一个哈希地值,并将这个哈希地址作为储存改数据的地址,这样下次再查找这个数据时,只需要通过哈希函数再获取到该地址然后直接去拿就好这样就做到了不经过任何比较&#…

数学建模-评价类问题-优劣解距离法(TOPSIS)

1-AI带你认识TOPSIS📘 一、TOPSIS 方法简介1. ​​基本定义:​​​​TOPSIS(Technique for Order Preference by Similarity to an Ideal Solution)​​,中文通常称为:•​​优劣解距离法​​•​​逼近理想…

Go协程:从汇编视角揭秘实现奥秘

🚀 Go协程:从汇编视角揭秘实现奥秘 #Go语言 #协程原理 #并发编程 #底层实现 引用: 关于 Go 协同程序(Coroutines 协程)、Go 汇编及一些注意事项。 🌟 前言:重新定义并发编程范式 在当今高并发…

MySQL 事务(重点)

MySQL 这个东西注定是可能会被多个用户/客户端来同时访问的,这是肯定的,MySQL 中存放的都是数据,数据可能有一个上层线程在用,也有可能另一个线程也要用...数据是被所有人共享的,所以就注定了 MySQL 这样的服务在一个时…

uniapp:h5链接拉起支付宝支付

场景:APP内点击支付宝支付,后台返回类似链接https://qr.alipay.com/bax***********c3050 通常做法是,使用plus.runtime.openURL(deeplink);先打开浏览器,浏览器会提示打开支付宝,之后是支付流程。现在可以省略跳转h5的…

吴恩达 Machine Learning(Class 3)

Week 11.1 K-means Cluster centroidK-means 是无监督学习中聚类算法的一种,核心在于更新聚类质心;首先将每个点分配给几个聚类质心,取决于那些点离哪个质心更近;然后将几个聚类质心移动到分配给他的所有点的平均值,不…

MyBatis 动态查询语句详解:让 SQL 更灵活可控

MyBatis 动态查询语句详解:让 SQL 更灵活可控 在日常的数据库操作中,我们经常会遇到需要根据不同条件拼接 SQL 语句的场景。比如查询用户时,可能需要根据姓名、年龄、性别等多个条件进行筛选,而这些条件往往是动态变化的 —— 有时…

Java基础语法three

一、一维数组一维数组初始化数据类型[] 数组名new 数据类型[数组长度]//动态初始化数据类型[] 数组名new 数据类型[]{值}//静态初始化数据类型[] 数组名{值}数组长度一旦确定,就不可更改。数组是序排序;数组属于引用数据类型的变量,数组的元素…

【数据结构】排序算法全解析:概念与接口

1.排序的概念及其运用 1.1 排序的概念 排序:所谓排序,就是使一串记录,按照其中的某个或某些关键字的大小,递增或递减的排列起来的操作。 稳定性:假定在待排序的记录序列中,存在多个具有相同的关键字的…

在 CentOS 7 上使用 LAMP 架构部署 WordPress

CentOS 7 LAMP 架构部署 WordPress全步骤本文将详细介绍如何在 CentOS 7 系统上通过 LAMP(Linux Apache MariaDB PHP)架构部署 WordPress 博客平台。 在CentOS 7上基于LAMP架构部署WordPress 一、系统基础配置 1. 修改主机名(本机IP&#…

Node.js导入MongoDB具体操作

在Node.js应用程序中,导入MongoDB是一项常见任务。本文将详细介绍如何在Node.js中连接和操作MongoDB数据库,包括安装必要的包、配置连接、执行基本的CRUD操作等步骤。1. 安装必要的包首先,确保你已经安装了Node.js和npm。然后,通过…

HTML--pre标签的作用

原文网址&#xff1a;HTML--pre标签的作用-CSDN博客 简介 本文介绍HTML里pre标签的作用。 <pre> 元素表示预定义格式文本。里边的文本会保留原格式&#xff0c;以等宽字体的形式展现出来&#xff0c;文本中的空白符&#xff08;比如空格和换行符&#xff09;都会显示出…

机器学习--数据预处理

目录 一、数据清洗&#xff1a;让数据纯净如新 1、缺失值处理&#xff1a; 2、异常值处理 3、重复值处理 二、数据变换&#xff1a;重塑数据的 “形状” 1、归一化 2、标准化 三、总结与展望 机器学习小白必看&#xff1a;数据预处理实战笔记 最近投身于机器学习的学习…

Python 数据可视化:Matplotlib 与 Seaborn 实战

Python 数据可视化&#xff1a;Matplotlib 与 Seaborn 实战​​​​在当今数据驱动的时代&#xff0c;数据可视化成为了理解和传达数据信息的关键手段。Python 作为一门强大的编程语言&#xff0c;拥有丰富的数据可视化库&#xff0c;其中 Matplotlib 和 Seaborn 尤为突出。本文…

计算机网络技术学习-day4《路由器配置》

目录 一、路由器基础认知 1. 路由器的核心功能 2. 路由器与交换机的区别 二、路由器配置基础操作 1. CLI&#xff08;命令行界面&#xff09;模式体系 2. 基础配置命令示例 &#xff08;1&#xff09;基础信息配置 &#xff08;2&#xff09;接口IP地址配置&#xff08;…

IDEA(十四) IntelliJ Idea 常用快捷键(Mac)

目录准备&#xff1a;Mac键盘符号和修饰键说明一、编辑类快捷键二、Search/Replace&#xff08;查询/替换&#xff09;三、编译、运行四、debug 调试五、Navigation&#xff08;导航&#xff09;六、Refactoring&#xff08;重构&#xff09;七、VCS/Local History八、Live Tem…