精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙Ability Kit(程序框架服務)【UIAbility組件與UI的數據同步】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-06-03 10:26 ? 次閱讀

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對象,本章節將以此為例進行說明。

  1. 在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;
      }
    }
    
  2. 在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')
                });
              })
            }
            // ...
          }
          // ...
        }
        // ...
      }
    }
    
  3. 在UIAbility的注冊事件回調中可以得到對應的觸發事件結果,運行日志結果如下所示。
    [Example].[Entry].[EntryAbility] 1. []
    [Example].[Entry].[EntryAbility] 1. [1]
    [Example].[Entry].[EntryAbility] 1. [2,"test"]
    
  4. 在自定義事件“event1”使用完成后,可以根據需要調用[eventHub.off()]方法取消該事件的訂閱。
    // context為UIAbility實例的AbilityContext
    this.context.eventHub.off('event1');
    
    `HarmonyOSOpenHarmony鴻蒙文檔籽料:mau123789是v直接拿`
    

新文檔.png

使用AppStorage/LocalStorage進行數據同步

ArkUI提供了AppStorage和LocalStorage兩種應用級別的狀態管理方案,可用于實現應用級別和UIAbility級別的數據同步。使用這些方案可以方便地管理應用狀態,提高應用性能和用戶體驗。其中,AppStorage是一個全局的狀態管理器,適用于多個UIAbility共享同一狀態數據的情況;而LocalStorage則是一個局部的狀態管理器,適用于單個UIAbility內部使用的狀態數據。通過這兩種方案,開發者可以更加靈活地控制應用狀態,提高應用的可維護性和可擴展性。詳細請參見[應用級變量的狀態管理]。

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 框架
    +關注

    關注

    0

    文章

    399

    瀏覽量

    17435
  • 數據同步
    +關注

    關注

    0

    文章

    17

    瀏覽量

    8153
  • 鴻蒙
    +關注

    關注

    57

    文章

    2312

    瀏覽量

    42747
收藏 人收藏

    評論

    相關推薦

    鴻蒙Ability Kit程序框架服務)【UIAbility組件生命周期】

    當用戶打開、切換和返回到對應應用時,應用中的UIAbility實例會在其生命周期的不同狀態之間轉換。UIAbility類提供了一系列回調,通過這些回調可以知道當前UIAbility實例的某個狀態發生改變,會經過
    的頭像 發表于 05-30 21:51 ?1424次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【<b class='flag-5'>UIAbility</b><b class='flag-5'>組件</b>生命周期】

    鴻蒙Ability Kit程序框架服務)【UIExtensionAbility】

    [UIExtensionAbility]是UI類型的ExtensionAbility組件,需要與[UIExtensionComponent]一起配合使用,開發者可以在UIAbility的頁面中通過
    的頭像 發表于 06-05 09:19 ?1323次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【UIExtensionAbility】

    鴻蒙開發-應用程序框架UIAbility的使用

    UIAbility內頁面的新建以及UIAbility內頁面的跳轉和數據傳遞。 打開DevEco Studio,選擇一個Empty Ability工程模板,創建一個工程,例如命名為MyA
    發表于 01-17 16:36

    HarmonyOS/OpenHarmony應用開發-Stage模型UIAbility組件使用(一)

    一、UIAbility組件概述1.概述 UIAbility組件是一種包含UI界面的應用組件,主要
    發表于 06-28 10:32

    HarmonyOS/OpenHarmony應用開發-Stage模型UIAbility組件使用(一)

    一、UIAbility組件概述1.概述 UIAbility組件是一種包含UI界面的應用組件,主要
    發表于 06-28 10:32

    鴻蒙應用模型:【Ability Kit】簡介

    Ability Kit程序框架服務)提供了應用程序開發和運行的應用模型,是系統為開發者提供的應
    的頭像 發表于 05-29 14:41 ?590次閱讀
    <b class='flag-5'>鴻蒙</b>應用模型:【<b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>】簡介

    鴻蒙Ability Kit程序框架服務)【UIAbility組件概述】

    UIAbility組件是一種包含UI的應用組件,主要用于和用戶交互。
    的頭像 發表于 05-30 20:17 ?404次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【<b class='flag-5'>UIAbility</b><b class='flag-5'>組件</b>概述】

    鴻蒙Ability Kit程序框架服務)【UIAbility組件生命周期】實例

    本文檔主要描述了應用運行過程中UIAbility和自定義組件的生命周期。對于UIAbility,描述了Create、Foreground、Background、Destroy四種生命周期。對于頁面
    的頭像 發表于 05-31 15:03 ?1058次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【<b class='flag-5'>UIAbility</b><b class='flag-5'>組件</b>生命周期】實例

    鴻蒙Ability Kit程序框架服務)【UIAbility組件啟動模式】

    UIAbility的啟動模式是指UIAbility實例在啟動時的不同呈現狀態。針對不同的業務場景,系統提供了三種啟動模式:
    的頭像 發表于 06-06 11:05 ?768次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【<b class='flag-5'>UIAbility</b><b class='flag-5'>組件</b>啟動模式】

    鴻蒙Ability Kit程序框架服務)【UIAbility組件基本用法】

    UIAbility組件的基本用法包括:指定UIAbility的啟動頁面以及獲取UIAbility的上下文[UIAbilityContext]。
    的頭像 發表于 06-06 11:02 ?427次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【<b class='flag-5'>UIAbility</b><b class='flag-5'>組件</b>基本用法】

    鴻蒙Ability Kit程序框架服務)【UIAbility組件間交互(設備內)】

    UIAbility是系統調度的最小單元。在設備內的功能模塊之間跳轉時,會涉及到啟動特定的UIAbility,該UIAbility可以是應用內的其他UIAbility,也可以是其他應用的
    的頭像 發表于 06-03 09:53 ?618次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【<b class='flag-5'>UIAbility</b><b class='flag-5'>組件</b>間交互(設備內)】

    鴻蒙Ability Kit程序框架服務)【UIAbility內和UIAbility間頁面的跳轉】

    基于Stage模型下的UIAbility開發,實現UIAbility內和UIAbility間頁面的跳轉。
    的頭像 發表于 06-03 14:13 ?661次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【<b class='flag-5'>UIAbility</b>內和<b class='flag-5'>UIAbility</b>間頁面的跳轉】

    鴻蒙Ability Kit程序框架服務)【ExtensionAbility組件

    ExtensionAbility組件是基于特定場景(例如服務卡片、輸入法等)提供的應用組件,以便滿足更多的使用場景。
    的頭像 發表于 06-04 15:54 ?489次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b>(<b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>)【ExtensionAbility<b class='flag-5'>組件</b>】

    鴻蒙開發Ability Kit程序框架服務:任務管理

    AbilityRecord:系統服務側管理一個UIAbility實例的最小單元,對應一個應用側的UIAbility組件實例。系統服務側管理
    的頭像 發表于 06-24 14:46 ?404次閱讀
    <b class='flag-5'>鴻蒙</b>開發<b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>:任務管理

    鴻蒙開發Ability Kit程序框架服務:FA模型啟動Stage模型UIAbility

    本文介紹FA模型的三種應用組件如何啟動Stage模型的UIAbility組件
    的頭像 發表于 06-25 16:00 ?330次閱讀
    <b class='flag-5'>鴻蒙</b>開發<b class='flag-5'>Ability</b> <b class='flag-5'>Kit</b><b class='flag-5'>程序</b><b class='flag-5'>框架</b><b class='flag-5'>服務</b>:FA模型啟動Stage模型<b class='flag-5'>UIAbility</b>