安卓開發者自學鴻蒙開發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
英文地址,請注明出處:http://en.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…