鸿蒙 emitter 和 eventHub 的区别

在鸿蒙(HarmonyOS)开发中,EmitterEventHub是两种不同的事件通信机制,主要区别如下:


一、核心功能区别

特性 Emitter EventHub
通信范围 支持跨线程通信(如主线程与Worker线程) 仅限线程内通信(如UIAbility内组件间通信)
事件优先级 支持配置事件优先级(如IMMEDIATE、LOW) 无优先级设置
订阅类型 支持持续订阅(on)和单次订阅(once 仅支持持续订阅(on
数据约束 需封装为EventData对象,支持复杂数据类型 可传递任意类型参数(...args: Object[]

二、适用场景

  • Emitter

    • 需要跨线程通信的场景(如主线程与Worker线程交互)。
    • 需要控制事件投递优先级(如高优先级事件优先处理)。
    • 与HarmonyOS的Worker能力配合使用。
  • EventHub

    • 同线程内组件间通信(如UIAbility与Page、Page与组件)。
    • 轻量级事件传递,无需复杂配置。
    • Stage模型中通过UIAbility的context.eventHub直接获取。

三、使用方式对比

1. Emitter示例
typescript 复制代码
// 订阅事件(跨线程)
import { emitter } from '@kit.BasicServicesKit';

// 定义事件及优先级
let event: emitter.InnerEvent = { eventId: 1, priority: emitter.EventPriority.LOW };
// 订阅事件
emitter.on(event, (eventData: emitter.EventData) => {
  console.info(`Received data: ${JSON.stringify(eventData)}`);
});

// 发送事件(可在不同线程中调用)
let eventData: emitter.EventData = { data: { content: "Hello" } };
emitter.emit(event, eventData);

2. EventHub示例

typescript 复制代码
// 在UIAbility中订阅事件(同线程)
import { UIAbility } from '@kit.AbilityKit';

export default class EntryAbility extends UIAbility {
  onCreate() {
    this.context.eventHub.on('myEvent', (data: string) => {
      promptAction.showToast({ message: data });
    });
  }

  // 发送事件
  triggerEvent() {
    this.context.eventHub.emit('myEvent', 'EventHub Message');
  }
}

四、其他区别

  • 模型支持
    • EventHub仅支持Stage模型,通过context获取。
    • Emitter支持FA和Stage模型,且适用于Worker线程。
  • 资源消耗
    • Emitter因支持跨线程和优先级队列,资源占用较高。
    • EventHub更轻量,适合高频次、简单的通信场景。

总结建议

  • 跨线程通信 或需优先级控制 → 选择Emitter
  • 同线程组件解耦简单事件传递 → 使用EventHub
相关推荐
ldsweet10 小时前
《HarmonyOS技术精讲-Basic Services Kit》线程通信利器:Emitter实现高效线程间消息传递
华为·harmonyos
心中有国也有家11 小时前
AtomGit Flutter 鸿蒙客户端:Canvas 绘制进阶-路径、渐变与混合模式
android·javascript·flutter·华为·harmonyos
w1395485642211 小时前
鸿蒙应用开发实战【93】— 实战短信批量导入完整流程
华为·harmonyos·鸿蒙系统
Georgewu13 小时前
【HarmonyOS 三方库 】Python 三方库鸿蒙化适配 PC 完整迁移实战
harmonyos
花开彼岸天~13 小时前
鸿蒙应用开发实战【94】— 实战多卡号场景管理最佳实践
android·华为·harmonyos·鸿蒙系统
花开彼岸天~13 小时前
鸿蒙应用开发实战【97】— 应用发布AGC上架全流程
华为·harmonyos·鸿蒙系统
绝世番茄13 小时前
HarmonyOS Next 深入解析:Scroll 组件与 onScroll 滚动监听实战
华为·harmonyos·鸿蒙
2501_9197490313 小时前
华为鸿蒙免费铃声APP—小羊免费铃声
华为·harmonyos
不羁的木木14 小时前
《HarmonyOS技术精讲-NearLink Kit(星闪服务)》第3篇:数据收发——点对点数据传输实战
pytorch·华为·harmonyos
木木子2214 小时前
[特殊字符] 种菜模拟器 — 鸿蒙ArkTS完整技术解析
microsoft·华为·harmonyos