鸿蒙emitter 订阅事件封装 EmitterUtils

适用于api11 和api12  废话不多说,直接上代码

import emitter from '@ohos.events.emitter';
import { StringUtils } from '@ohos/flutter_ohos';

export  class EmitterUtils{


  /**
   * 发射字符串类型的
   * @param eventId
   * @param data
   */
  public  static sendEvent(eventId:string,data:string=''){
    let eventData: emitter.EventData = {
      data: {
        "content": data,
      }
    };
    let options: emitter.Options = {
      priority: emitter.EventPriority.HIGH
    };
    emitter.emit(eventId, options, eventData);
  }
  /**
   * 发送一个object ,并将eventId 带过去
   * @param eventId
   * @param data
   */
  public  static sendObjetEvent(eventId:string,data:object){
    let eventData: emitter.EventData = {
      data: {
        "content": data,
        "eventId":eventId
      }
    };
    let options: emitter.Options = {
      priority: emitter.EventPriority.HIGH
    };
    emitter.emit(eventId, options, eventData);
  }
  /**
   * 监听string
   * @param eventId
   * @param on
### 鸿蒙系统中 Emitter 事件总线介绍 在鸿蒙系统开发里,Emitter 事件总线是一种用于组件间通信的机制。它借助事件的发布与订阅模式,达成不同组件、模块间的解耦通信。此模式下,事件的发布者和订阅者无需知晓彼此的存在,仅需关注事件本身。Emitter 事件总线会管理事件的发送和接收,让开发者能更便捷地处理组件间的交互。 ### 使用方法 #### 1. 引入依赖 在鸿蒙系统项目里,要先引入 Emitter 相关的依赖库。一般而言,可在 `build.gradle` 文件中添加相应依赖: ```groovy dependencies { implementation 'com.example:emitter-library:1.0.0' // 假设的依赖库 } ``` #### 2. 创建 Emitter 实例 在代码里创建 Emitter 实例,通常可在应用的全局单例类或者合适的管理类中创建: ```java import com.example.emitter.Emitter; public class EventBusManager { private static final Emitter emitter = new Emitter(); public static Emitter getEmitter() { return emitter; } } ``` #### 3. 订阅事件 在需要接收事件的组件里订阅特定事件: ```java import com.example.emitter.Emitter; public class ReceiverComponent { public ReceiverComponent() { Emitter emitter = EventBusManager.getEmitter(); emitter.on("eventName", (args) -> { // 处理事件逻辑 Object data = args[0]; System.out.println("Received event with data: " + data); }); } } ``` #### 4. 发布事件 在需要发送事件的组件里发布事件: ```java import com.example.emitter.Emitter; public class SenderComponent { public void sendEvent() { Emitter emitter = EventBusManager.getEmitter(); Object data = "Hello, Event!"; emitter.emit("eventName", data); } } ``` #### 5. 取消订阅 若不再需要接收某个事件,可取消订阅: ```java import com.example.emitter.Emitter; public class ReceiverComponent { private Emitter.Listener listener; public ReceiverComponent() { Emitter emitter = EventBusManager.getEmitter(); listener = (args) -> { // 处理事件逻辑 Object data = args[0]; System.out.println("Received event with data: " + data); }; emitter.on("eventName", listener); } public void unsubscribe() { Emitter emitter = EventBusManager.getEmitter(); emitter.off("eventName", listener); } } ``` ### 相关资料 - **官方文档**:鸿蒙系统官方开发者文档会提供关于 Emitter 事件总线的详细说明、API 文档以及使用示例。可访问鸿蒙开发者官网查找相关内容。 - **开源项目**:在代码托管平台(如 GitHub)上搜索鸿蒙系统 Emitter 事件总线相关的开源项目,参考其中的实现和使用方式。 - **技术论坛**:鸿蒙开发者社区、Stack Overflow 等技术论坛上有开发者分享的使用经验、遇到的问题及解决方案。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值