UIAbility組件與UI的數據同步
基于當前的應用模型,可以通過以下幾種方式來實現UIAbility組件與UI之間的數據同步。
- [使用EventHub進行數據通信]:在基類Context中提供了EventHub對象,可以通過發布訂閱方式來實現事件的傳遞。在事件傳遞前,訂閱者需要先進行訂閱,當發布者發布事件時,訂閱者將接收到事件并進行相應處理。
- [使用AppStorage/LocalStorage進行數據同步]:ArkUI提供了AppStorage和LocalStorage兩種應用級別的狀態管理方案,可用于實現應用級別和UIAbility級別的數據同步。
- 開發前請熟悉鴻蒙開發指導文檔 :[
gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]
使用EventHub進行數據通信
[EventHub]為UIAbility組件提供了事件機制,使它們能夠進行訂閱、取消訂閱和觸發事件等數據通信能力。
在[基類Context]中,提供了EventHub對象,可用于在UIAbility組件實例內通信。使用EventHub實現UIAbility與UI之間的數據通信需要先獲取EventHub對象,本章節將以此為例進行說明。
- 在UIAbility中調用[
eventHub.on()]方法注冊一個自定義事件“event1”,[eventHub.on()]有如下兩種調用方式,使用其中一種即可。import hilog from '@ohos.hilog'; import UIAbility from '@ohos.app.ability.UIAbility'; import type window from '@ohos.window'; import type { Context } from '@ohos.abilityAccessCtrl'; import Want from '@ohos.app.ability.Want' import type AbilityConstant from '@ohos.app.ability.AbilityConstant'; const DOMAIN_NUMBER: number = 0xFF00; const TAG: string = '[EventAbility]'; export default class EntryAbility extends UIAbility { onCreate(want: Want, launchParam: AbilityConstant.LaunchParam): void { // 獲取UIAbility實例的上下文 let context = this.context; // 獲取eventHub let eventhub = this.context.eventHub; // 執行訂閱操作 eventhub.on('event1', this.eventFunc); eventhub.on('event1', (data: string) = > { // 觸發事件,完成相應的業務操作 }); hilog.info(DOMAIN_NUMBER, TAG, '%{public}s', 'Ability onCreate'); } // ... eventFunc(argOne: Context, argTwo: Context): void { hilog.info(DOMAIN_NUMBER, TAG, '1. ' + `${argOne}, ${argTwo}`); return; } } - 在UI中通過[eventHub.emit()]方法觸發該事件,在觸發事件的同時,根據需要傳入參數信息。
import common from '@ohos.app.ability.common'; import promptAction from '@ohos.promptAction'; @Entry @Component struct Page_EventHub { private context = getContext(this) as common.UIAbilityContext; eventHubFunc() : void { // 不帶參數觸發自定義“event1”事件 this.context.eventHub.emit('event1'); // 帶1個參數觸發自定義“event1”事件 this.context.eventHub.emit('event1', 1); // 帶2個參數觸發自定義“event1”事件 this.context.eventHub.emit('event1', 2, 'test'); // 開發者可以根據實際的業務場景設計事件傳遞的參數 } build() { Column() { // ... List({ initialIndex: 0 }) { ListItem() { Row() { // ... } .onClick(() = > { this.eventHubFunc(); promptAction.showToast({ message: $r('app.string.EventHubFuncA') }); }) } // ... ListItem() { Row() { // ... } .onClick(() = > { this.context.eventHub.off('event1'); promptAction.showToast({ message: $r('app.string.EventHubFuncB') }); }) } // ... } // ... } // ... } } - 在UIAbility的注冊事件回調中可以得到對應的觸發事件結果,運行日志結果如下所示。
[Example].[Entry].[EntryAbility] 1. [] [Example].[Entry].[EntryAbility] 1. [1] [Example].[Entry].[EntryAbility] 1. [2,"test"] - 在自定義事件“event1”使用完成后,可以根據需要調用[eventHub.off()]方法取消該事件的訂閱。
// context為UIAbility實例的AbilityContext this.context.eventHub.off('event1'); `HarmonyOS與OpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`

使用AppStorage/LocalStorage進行數據同步
ArkUI提供了AppStorage和LocalStorage兩種應用級別的狀態管理方案,可用于實現應用級別和UIAbility級別的數據同步。使用這些方案可以方便地管理應用狀態,提高應用性能和用戶體驗。其中,AppStorage是一個全局的狀態管理器,適用于多個UIAbility共享同一狀態數據的情況;而LocalStorage則是一個局部的狀態管理器,適用于單個UIAbility內部使用的狀態數據。通過這兩種方案,開發者可以更加靈活地控制應用狀態,提高應用的可維護性和可擴展性。詳細請參見[應用級變量的狀態管理]。
審核編輯 黃宇
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
框架
+關注
關注
0文章
404瀏覽量
18422 -
數據同步
+關注
關注
0文章
17瀏覽量
8370 -
鴻蒙
+關注
關注
60文章
2963瀏覽量
45883
發布評論請先 登錄
相關推薦
熱點推薦
鴻蒙Ability Kit(程序框架服務)【UIAbility組件生命周期】
當用戶打開、切換和返回到對應應用時,應用中的UIAbility實例會在其生命周期的不同狀態之間轉換。UIAbility類提供了一系列回調,通過這些回調可以知道當前UIAbility實例的某個狀態發生改變,會經過
鴻蒙Ability Kit(程序框架服務)【UIExtensionAbility】
[UIExtensionAbility]是UI類型的ExtensionAbility組件,需要與[UIExtensionComponent]一起配合使用,開發者可以在UIAbility的頁面中通過
鴻蒙開發-應用程序框架UIAbility的使用
UIAbility內頁面的新建以及UIAbility內頁面的跳轉和數據傳遞。 打開DevEco Studio,選擇一個Empty Ability工程模板,創建一個工程,例如命名為MyA
發表于 01-17 16:36
HarmonyOS/OpenHarmony應用開發-Stage模型UIAbility組件使用(一)
一、UIAbility組件概述1.概述
UIAbility組件是一種包含UI界面的應用組件,主要
發表于 06-28 10:32
鴻蒙Ability Kit(程序框架服務)【UIAbility組件生命周期】實例
本文檔主要描述了應用運行過程中UIAbility和自定義組件的生命周期。對于UIAbility,描述了Create、Foreground、Background、Destroy四種生命周期。對于頁面
鴻蒙Ability Kit(程序框架服務)【UIAbility組件啟動模式】
UIAbility的啟動模式是指UIAbility實例在啟動時的不同呈現狀態。針對不同的業務場景,系統提供了三種啟動模式:
鴻蒙Ability Kit(程序框架服務)【UIAbility組件基本用法】
UIAbility組件的基本用法包括:指定UIAbility的啟動頁面以及獲取UIAbility的上下文[UIAbilityContext]。
鴻蒙Ability Kit(程序框架服務)【UIAbility組件間交互(設備內)】
UIAbility是系統調度的最小單元。在設備內的功能模塊之間跳轉時,會涉及到啟動特定的UIAbility,該UIAbility可以是應用內的其他UIAbility,也可以是其他應用的
鴻蒙Ability Kit(程序框架服務)【UIAbility內和UIAbility間頁面的跳轉】
基于Stage模型下的UIAbility開發,實現UIAbility內和UIAbility間頁面的跳轉。
【HarmonyOS 5】鴻蒙中的UIAbility詳解(二)
【HarmonyOS 5】鴻蒙中的UIAbility詳解(二) ##鴻蒙開發能力 ##HarmonyOS SDK應用服務##鴻蒙金融類應用
鴻蒙Ability Kit(程序框架服務)【UIAbility組件與UI的數據同步】
評論