鸿蒙 管理应用拥有的状态有Localstorage、Appstorage、PersistentStorage、Environment、用户首选项、持久化方案。

LocalStorage:

LocalStorage是页面级UI状态存储,通过@Entry装饰器接收的参数可以在页面内共享同一个LocalStorage实例。支持UIAbility实例内多个页面间状态共享。

// 存储数据

localStorage.setItem('key', 'value');

// 获取数据

const value = localStorage.getItem('key');

// 删除数据

localStorage.removeItem('key');

LocalsStorage根据@Component装饰的组件的同步类型不同,提供了两个装饰器:
@LocalStorageProp:

@LocalStorageProp装饰的变量与LocalStorage中给定属性建立单向同步关系。

@LocalStorageLink:

@LocalStorageLink装饰的变量与LocalStorage中给定属性建立双向同步关系。

AppStorage:

AppStorage是应用全局的UI状态存储。是喝应用的进程绑定的,由UI框架在应用程序启动时创建,为应用程序UI状态属性提供中央存储。

和AppStroage不同的是,LocalStorage是页面级的,通常应用页面内的数据共享。而Appstorage是应用的全局状态共享,还相当于整个应用的"中枢",持久化数据PeresistentStorage和环境变量Environment都是通过AppStorage中转,才可以和UI交互。

// 存储数据

appStorage.set('key', 'value');

// 获取数据

appStorage.get('key')

.then(value => {

console.log(value);

});

// 删除数据

appStorage.delete('key');

AppStorage使用场景和相关的装饰器:@StorageProp和@StorageLink。
@StorageProp:

使用@StorageProp(key)/@StorageLink(key)装饰组件内的变量,key标识了AppStorage的属性。AppStorage不一定存在key对应的属性,因此@StorageProp(key)/@StorageLink(key)装饰的变量进行本地初始化是必要的。

@StorageProp(key)是和AppStorage中key对应的属性建立单向数据同步,允许本地改变,但是对于@StorageProp,本地的修改永远不会同步回AppStorage中,相反,如果AppStorage给定key的属性发生改变,改变会被同步给@StorageProp,并覆盖掉本地的修改。


@StorageLink:

@StorageLink(key)是和AppStorage中key对应的属性建立双向数据同步:

  1. 本地修改发生,该修改会被写回AppStorage中;

  2. AppStorage中的修改发生后,该修改会被同步到所有绑定AppStorage对应key的属性上,包括单向(@StorageProp和通过Prop创建的单向绑定变量)、双向(@StorageLink和通过Link创建的双向绑定变量)变量和其他实例(比如PersistentStorage)。

PersistentStorage:

PersistentStorage:持久化存储UI状态。

// 初始化数据库

const db = await persistentStorage.getDatabase('myDatabase');

// 插入数据

await db.insert('tableName', { key: 'value' });

// 查询数据

const result = await db.query('tableName', { key: 'value' });

// 删除数据

await db.delete('tableName', { key: 'value' });

作用是持久化存储选定的 AppStorage 属性

  • PersistentStorage的持久化变量最好是小于 2kb 的数据,不要大量的数据持久化。因为PersistentStorage写入磁盘的操作是同步的,大量的数据本地化读写会同步在UI线程中执行,影响UI渲染性能。
  • PersistentStorage和UI实例相关联,持久化操作需要在UI实例初始化成功后,才能使用。而且一个 属性 只能初始化一次。

Environment:

应用程序运行的设备的环境参数,环境参数会同步到AppStorage中,可以和AppStorage搭配使用。

// 获取设备信息

const deviceInfo = environment.getDeviceInfo();

// 获取系统设置

const systemSettings = environment.getSystemSettings();

用户首选项:

其实就是个 xml 本地文件,<string>你好</string>,value如果string类型,可以存 16MB 的数据,最多存 1w 条数据。

// 存储用户首选项

userPreferences.set('theme', 'dark');

// 获取用户首选项

const theme = userPreferences.get('theme');

// 删除用户首选项

userPreferences.remove('theme');

持久化方案--数据库(类似表格):

需要定义表格的标题,表格的每一项数据的类型,有一套专门的 API 对数据进行增删查改。单条数据有2M的限制,总条数理论上没限制。

总结:

在鸿蒙操作系统中,有多种方式可以管理应用的状态和数据存储。选择合适的方法取决于具体的应用场景和需求:

LocalStorage:适用于简单的键值对存储。
AppStorage:适用于需要持久化存储的小量数据。
PersistentStorage:适用于需要长期保存大量数据的场景。
Environment:用于访问系统环境变量和配置。
用户首选项:用于存储用户的个性化设置和偏好。
持久化方案:适用于需要存储大量数据或复杂数据结构的场景,如文件系统和 SQLite 数据库。

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

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

相关文章

关系型数据库和非关系型数据库详解

文章目录 关系型数据库和非关系型数据库详解一、引言二、关系型数据库1、关系型数据库简介1.1、SQL语言 2、关系型数据库的实际应用3、关系型数据库的优点4、关系型数据库的缺点 三、非关系型数据库1、非关系型数据库简介1.1、灵活性示例 2、非关系型数据库的分类3、非关系型数…

jvm调优方式

1. 堆内存调优&#xff1a; • 堆大小调整&#xff1a;通过-Xms和-Xmx参数设置堆内存的初始大小和最大大小&#xff0c;确保 JVM 在启动时有足够的内存&#xff0c;并在需要时能够扩展到最大内存。 • 堆分区&#xff1a;使用-XX:NewSize和-XX:MaxNewSize调整新生代&#xff08…

redis linux 安装

下载解压 https://download.redis.io/releases/ tar -zvxf ----redis-7.4.1编译 进入目录下 # redis 依赖c yum install gcc-cmake可能会有问题&#xff0c;所以记得换源# 安装到 /usr/local/redis make PREFIX/usr/local/redis installcd src ./redis-serverredis.confi…

C语言编程练习:验证哥德巴赫猜想 进制转换 rand函数

目录 一. 验证哥德巴赫猜想 二. 进制转换 三. rand函数 往期回顾 一. 验证哥德巴赫猜想 任一充分大的偶数&#xff0c;可以用两个素数之和表示&#xff0c;例如&#xff1a; 4 2 2 6 3 3 10 3 7 10 5 5 .. 9 8 1 9 7 9 • 思路&#xff1a;偶数 num 是要分解的数&…

npm list -g --depth=0(用来列出全局安装的所有 npm 软件包而不显示它们的依赖项)

您提供的命令 npm list -g --depth0 是在 Node Package Manager (npm) 的上下文中使用的&#xff0c;用来列出全局安装的所有 npm 软件包而不显示它们的依赖项。 这是它的运作方式&#xff1a; npm list -g --depth0-g: 指定列表应包括全局安装的软件包。--depth0: 限制树形结…

‘视’不可挡:OAK相机助力无人机智控飞行!

南京邮电大学通达学院的刘同学用我们的oak-d-lite实现精确打击无人机的避障和目标识别定位功能&#xff0c;取得了比赛冠军。我们盼望着更多的朋友们能够加入到我们OAK的队伍中来&#xff0c;参与到各式各样的比赛中去。我们相信&#xff0c;有了我们相机的助力&#xff0c;大家…

hive 统计各项目下排名前5的问题种类

实现指定某项目下的数据效果图如下所示&#xff1a; 其中 ABCDE 为前5名的问题种类&#xff0c;其中A问题有124个&#xff08;出现了124次&#xff09; 数据说明&#xff1a; 整个数据集 包含很多项目一个项目 包含很多问题一个问题 选项 可认为是 类别值&#xff0c;所有出…

Odoo :一款免费开源的日化行业ERP管理系统

文 / 开源智造Odoo亚太金牌服务 概述 构建以 IPD 体系作为核心的产品创新研发管控体系&#xff0c;增进企业跨部门业务协同的效率&#xff0c;支撑研发管控、智慧供应链、智能制造以及全渠道营销等行业的场景化&#xff0c;构筑行业的研产供销财一体化管理平台。 行业的最新…

nacos-operator在k8s集群上部署nacos-server2.4.3版本踩坑实录

文章目录 操作步骤1. 拉取仓库代码2. 安装nacos-operator3. 安装nacos-server 坑点一坑点二nacos-ui页面访问同一集群环境下微服务连接nacos地址配置待办参考文档 操作步骤 1. 拉取仓库代码 &#xff08;这一步主要用到代码中的相关yml文件&#xff0c;稍加修改用于部署容器&…

【安全科普】NUMA防火墙诞生记

一、我为啥姓“NUMA” 随着网络流量和数据包处理需求的指数增长&#xff0c;曾经的我面对“高性能、高吞吐、低延迟”的要求&#xff0c;逐渐变得心有余而力不足。 多CPU技术应运而生&#xff0c;SMP&#xff08;对称多处理&#xff09;和NUMA&#xff08;非一致性内存访问&a…

HarmonyOS Next 组件或页面之间的所有通信(传参)方法总结

系列文章目录 【鸿蒙】HarmonyOS NEXT开发快速入门教程之ArkTS语法装饰器&#xff08;上&#xff09; 【鸿蒙】HarmonyOS NEXT开发快速入门教程之ArkTS语法装饰器&#xff08;下&#xff09; 【鸿蒙】HarmonyOS NEXT应用开发快速入门教程之布局篇&#xff08;上&#xff09; 【…

LeetCode654.最大二叉树

LeetCode刷题记录 文章目录 &#x1f4dc;题目描述&#x1f4a1;解题思路⌨C代码 &#x1f4dc;题目描述 给定一个不重复的整数数组 nums 。 最大二叉树 可以用下面的算法从 nums 递归地构建: 创建一个根节点&#xff0c;其值为 nums 中的最大值。 递归地在最大值 左边 的 子…

电子应用产品设计方案-9:全自动智能马桶系统设计方案

一、系统概述 本全自动智能马桶系统旨在提供舒适、卫生、便捷和智能化的如厕体验。通过融合多种传感器技术、电子控制单元和机械执行机构&#xff0c;实现马桶的自动冲洗、座圈加热、臀部清洗、烘干等功能&#xff0c;并具备智能感应、用户个性化设置和健康监测等特色功能。 二…

酒水分销积分商城小程序开发方案php+uniapp

酒水分销积分商城小程序开发&#xff0c;开发语言后端php&#xff0c;前端uniapp。核心功能模块&#xff1a;酒水商城、积分商城、二级分销、抽奖、优惠券。可以二开或定制。协助部署搭建。

UNIX网络编程-TCP套接字编程(实战)

概述 TCP客户端/服务器程序示例是执行如下步骤的一个回射服务器&#xff1a; 客户端从标准输入读入一行文本&#xff0c;并写给服务器。服务器从网络输入读入这行文本&#xff0c;并回射给客户端。客户端从网络输入读入这行回射文本&#xff0c;并显示在标准输出上。 TCP服务器…

Kafka-Eagle的配置——kafka可视化界面

通过百度网盘分享的文件&#xff1a;kafka-eagle-bin-2.0.8.tar.gz 链接&#xff1a;https://pan.baidu.com/s/1H3YONkL97uXbLTPMZHrfdg?pwdsltu 提取码&#xff1a;sltu 一、界面展示 二、软件配置 1、关闭kafka集群 kf.sh stop 2、将该软件上传到/opt/modules下 cd /opt…

Uniapp踩坑input自动获取焦点ref动态获取实例不可用

前言 大家好我是没钱的君子下流坯&#xff0c;用自己的话解释自己的知识。很久很更新了&#xff0c;这几个月一直在加班&#xff0c;今天记录一个uniapp关于input中focus()方法自动获取焦点的坑。 案例 为了实现一个手机验证码的页面&#xff0c;验证码是五个输入框&#xf…

报错 No available slot found for the embedding model

报错内容 Server error: 503 - [address0.0.0.0:12781, pid304366] No available slot found for the embedding model. We recommend to launch the embedding model first, and then launch the LLM models. 目前GPU占用情况如下 解决办法: 关闭大模型, 先把 embedding mode…

AI大模型(二):AI编程实践

一、软件安装 1. 安装 Visual Studio Code VSCode官方下载&#xff1a;Visual Studio Code - Code Editing. Redefined 根据自己的电脑系统选择相应的版本下载 安装完成&#xff01; 2. 安装Tongyi Lingma 打开VSCode&#xff0c;点击左侧菜单栏【extensions】&#xff0c;…

MFC程序崩溃时生成dmp文件

#include “HiExceptionHandle.h” #include <string> #pragma once class HiExceptionHandle { public:HiExceptionHandle(void);~HiExceptionHandle(void); public:void RunCrashHandler();void SetWERDumpLocation(const std::wstring dumpFolderPath); protected:st…