HarmonyOS 鸿蒙Next eventHub注册和移除事件监听

HarmonyOS 鸿蒙Next eventHub注册和移除事件监听

请问eventHub在注册事件后,如果将eventHub封装成单例调用,on函数里面参照官方demo的Function写方法名就无法回调,必须写成()=>{}这种形式才能调用,eventHub封装如下:

export class EventBus {
private eventHub: common.EventHub = (getContext(this) as common.UIAbilityContext).eventHub;
private static instance: EventBus;

private constructor() { }

public static getInstance(): EventBus { if (!EventBus.instance) { EventBus.instance = new EventBus(); } return EventBus.instance; }

postEvent(eventKey: string, …args: Object[]) { this.eventHub.emit(eventKey, …args); }

on(eventKey: string, callback: Function) { this.eventHub.on(eventKey, callback) }

off(eventKey: string, callback?: Function) { this.eventHub.off(eventKey, callback) } }<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

这种能生效

EventBus.getInstance().on(“test”,()=>{})<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>

这种不生效,notifyUI就是一个普通函数notifyUI(){}

EventBus.getInstance().on(“test”, this.notifyUI)<button style="position: absolute; padding: 4px 8px 0px; cursor: pointer; top: 8px; right: 8px; font-size: 14px;">复制</button>


更多关于HarmonyOS 鸿蒙Next eventHub注册和移除事件监听的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next eventHub注册和移除事件监听的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙系统中,eventHub用于管理和分发事件。注册和移除事件监听是eventHub的基本功能,以下是相关操作的简要说明:

注册事件监听

要注册事件监听,你需要调用eventHub的registerEventListener方法。该方法通常需要传入以下参数:

  1. 事件类型:指定要监听的事件类型,如触摸事件、键盘事件等。
  2. 监听器:实现了事件处理逻辑的监听器对象。
  3. 用户数据(可选):与监听器关联的用户数据,可以在事件处理时获取。

调用该方法后,eventHub将开始分发指定类型的事件到提供的监听器。

移除事件监听

要移除已注册的事件监听,你需要调用eventHub的unregisterEventListener方法。该方法通常需要传入以下参数:

  1. 事件类型:与注册时相同的事件类型。
  2. 监听器:要移除的监听器对象。

调用该方法后,eventHub将停止分发指定类型的事件到该监听器。

请注意,正确管理事件监听的注册和移除对于避免资源泄漏和保证应用稳定性至关重要。

如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html

回到顶部