EventHub、Emitter、commonEventManager 三种事件能力区别与选择

EventHub、Emitter、commonEventManager 三种事件能力区别与选择

HarmonyOS
2024-05-28 21:03:23
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
NingJ

背景与分析

HarmonyOS系统上主要提供了3种事件相关的模块,分别是EventHub、Emitter、commonEventManager。

它们3个模块使用上非常相识,都是订阅+发布的形式。但是实际应用场景有很大的不同。

EventHub

EventHub模块提供了事件中心,提供订阅、取消订阅、触发事件的能力。

特点:

  •  仅stage模型可用
  • 通过context直接获取,作用范围与使用的context等价

Emitter

Emitter模块提供了在同一进程不同线程间,或同一进程同一线程内,发送和处理事件的能力,包括持续订阅事件、单次订阅事件、取消订阅事件,以及发送事件到事件队列的能力。

特点:

  •  FA与Stage都可以用
  • 可以与worker搭配使用

commonEventManager

CommonEvent模块提供了公共事件相关的能力,包括发布公共事件、订阅公共事件、以及退订公共事件。

特点:

  • 订阅系统的公共事件,比如低电量提示、开始充电等。
  •  应用间通信,可以添加权限管控。

如何选择

主线程内通信:EventHub

主线程与Worker间通信:Emitter

应用间通信:commonEventManager

获取系统公共事件信息(低电量、充电信息):commonEventManager

已于2024-5-29 22:05:19修改
分享
微博
QQ
微信
回复
2024-05-29 22:04:53
相关问题
candidate 会在哪三种情况下退出?
2333浏览 • 1回复 待解决
视频进度滑动条的三种实现方式
338浏览 • 1回复 待解决
关于emittereventHub的使用场景
810浏览 • 1回复 待解决
LocalstorageAppStorage区别
645浏览 • 1回复 待解决
TaskPoolWorker的区别
583浏览 • 1回复 待解决
三种类型分别推荐哪些的使用场景?
877浏览 • 1回复 待解决
如何选择Navigation 组件 Tabs 组件
694浏览 • 1回复 待解决
元服务服务卡片的区别
1132浏览 • 1回复 待解决
鸿蒙Android、iOS有什么区别
10794浏览 • 5回复 已解决
request的downloadFileTask有什么区别
446浏览 • 1回复 待解决
时序数据库InfluxDBTSDB的区别
1624浏览 • 1回复 待解决