Emitter与EventHub的区别是什么?
Emitter与EventHub都可以用于事件分发,可以描述一下两者的区别吗,需要选择其一作为项目内统一的事件分发工具。
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
EventHub、Emitter、commonEventManager 三种事件能力区别与选择
1539浏览 • 1回复 待解决
请问Previewer与Simulator的区别是什么?
222浏览 • 1回复 待解决
FA模型与Stage模型的区别是什么?
585浏览 • 1回复 待解决
HTTP原生库与RCP区别是什么?
433浏览 • 1回复 待解决
Docker 数据卷容器与普通容器有什么差别?与容器互联的区别是什么?
3106浏览 • 1回复 待解决
HAP和HAR的区别是什么
2017浏览 • 1回复 待解决
sync和await的区别是什么?
389浏览 • 1回复 待解决
Applicationcontext、UIAbilitycontext、Context的区别是什么
1817浏览 • 1回复 待解决
DevEco Studio中HTTP代理与Gradle代理的区别是什么?
11245浏览 • 1回复 待解决
@State与@Link的双向绑定,和@Provide与@Comsume的双向绑定的区别是什么?
444浏览 • 2回复 待解决
navigation和router的区别是什么?
974浏览 • 1回复 待解决
#鸿蒙学习大百科#Navigation与Router的区别是什么?
256浏览 • 1回复 待解决
WordBreak.BREAK_WORD与WordBreak.BREAK_ALL的区别是什么?
375浏览 • 1回复 待解决
#鸿蒙学习大百科#Previewer与Simulator的区别是什么?
185浏览 • 1回复 待解决
#鸿蒙学习大百科#hilog与console的区别是什么?
220浏览 • 1回复 待解决
#鸿蒙学习大百科#@Builder与@Component的区别是什么?
360浏览 • 1回复 待解决
多态和多模的区别是什么?
5753浏览 • 2回复 已解决
关于emitter、eventHub的使用场景
2592浏览 • 1回复 待解决
#鸿蒙学习大百科#Stage模型与FA模型的区别是什么?
270浏览 • 1回复 待解决
HarmonyOS startAbility和connectAbility最根本的区别是什么
10848浏览 • 1回复 待解决
#鸿蒙学习大百科#应用与应用程序包的区别是什么?
234浏览 • 1回复 待解决
RS节点数与ArkUI控件节点树两者之间区别是什么?
193浏览 • 1回复 待解决
PolarDB高权限账号和普通账号的区别是什么?
2840浏览 • 1回复 待解决
系统弹框和应用消息推送的区别是什么
2033浏览 • 1回复 待解决
使用@Builder装饰器包含自定义组件的方法与普通方法的区别是什么
2210浏览 • 1回复 待解决
Emitter主要提供线程间发送和处理事件的能力,包括对持续订阅事件或单次订阅事件的处理、取消订阅事件、发送事件到事件队列等。EventHub提供了一种基于发布订阅模式的事件机制,通过订阅和发布自定义事件,实现UIAbility组件/ExtensionAbility组件与UI之间的数据同步。以下是一个使用EventHub的示例:
在UI界面中,通过eventHub.emit()方法触发自定义事件,并根据需要传递参数信息。以下是一个UI界面中触发事件的示例:
在UIAbility的注册事件回调中,可以得到对应的触发事件结果,日志结果会显示收到的事件数据。Emitter主要提供线程间发送和处理事件的能力,包括对持续订阅事件或单次订阅事件的处理、取消订阅事件、发送事件到事件队列等。
Emitter的开发步骤如下:
总的来说,EventHub更适合解耦组件之间的依赖关系,而Emitter更适合实现单向数据流。EventHubEventHub模块提供了事件中心,提供订阅、取消订阅、触发事件的能力。特点:仅stage模型可用通过context直接获取,作用范围与使用的context等价。
EmitterEmitter模块提供了在同一进程不同线程间,或同一进程同一线程内,发送和处理事件的能力,包括持续订阅事件、单次订阅事件、取消订阅事件,以及发送事件到事件队列的能力。特点:FA与Stage都可以用可以与worker搭配使用。
commonEventManagerCommonEvent模块提供了公共事件相关的能力,包括发布公共事件、订阅公共事件、以及退订公共事件。特点:
订阅系统的公共事件,比如低电量提示、开始充电等。应用间通信,可以添加权限管控。如何选择主线程内通信:EventHub主线程与Worker间通信:Emitter应用间通信:commonEventManager获取系统公共事件信息(低电量、充电信息):commonEventManager
commonEventManager 比如在多个线程订阅了事件,当事件发布时,多个线程都会响应。