HarmonyOS :基于 emitter 封装了一个便捷的 EventBus 事件通知
引言
鸿蒙提供提供了在同一进程不同线程间,或同一进程同一线程内,发送和处理事件的能力,包括持续订阅事件、单次订阅事件、取消订阅事件,以及发送事件到事件队列的能力。 @ohos.events.emitter
Emitter
封装前使用:emitter,下面我们先来看看官方示例:
对于事件通知,我们主要看两个交互操作:
发送
监听
不足之处:emitter 发送和接收消息体类型为 [key: string]: any,而习惯的强类型语言开发应用的同学都更倾向于发送一个对象,监听时接到的也是一个对象。
EventBus
我们先来看看封装后 EventBus 的使用区别:
首先定义一个对象,用来测试我们事件的发送和监听
发送事件,传递一个对象
监听事件,回执是一个对象
EventBus.listen<T>
方法提供注入对象泛型,将监听到的消息体转换成对应类型,如下截图为,监听结果时的断点:
附上完整代码(已开源,后续不断完善)
附注(Example)
Demo 示例已上传:
GitHub:https://github.com/liyufengrex/HarmonyAtomicService
GitCode:https://gitcode.com/liyufengrex/HarmonyAtomicService
(基于 API11 开发,支持 NEXT 及以上版本运行)已上传可供参考,包含如下内容:
静态库+动态包+多模块设计
状态管理
统一路由管理(router+navPathStack)
网络请求、Loading 等工具库封装
自定义组件、自定义弹窗(解耦)
EventBus 事件通知
扩展修饰器,实现 节流、防抖、权限申请
动态路由 (navPathStack + 动态 import + WrappedBuilder)
UI 动态节点操作 (BuilderNode + NodeController)
折叠屏适配示例
组件工厂示例
组件动态属性设置示例
云函数、云数据库使用示例
华为账号服务示例(快速登陆、快速验证手机号)
评论