Emitter主要提供线程间发送和处理事件的能力,包括对持续订阅事件或单次订阅事件的处理、取消订阅事件、发送事件到事件队列等。
- 订阅事件
import { promptAction } from '@kit.ArkUI';
import { emitter } from '@kit.BasicServicesKit';
const TAG: string = 'ThreadModel';
// 定义一个eventId为1的事件
let event: emitter.InnerEvent = {
eventId: 1
};
// 收到eventId为1的事件后执行该回调
let callback = (eventData: emitter.EventData): void => {
promptAction.showToast({
message: JSON.stringify(eventData)
});
};
// 订阅eventId为1的事件
emitter.on(event, callback);
promptAction.showToast({
message: $r('app.string.emitter_subscribe_success_toast')
});
-
发送事件
import { emitter } from '@kit.BasicServicesKit';
// 定义一个eventId为1的事件,事件优先级为Low
let event: emitter.InnerEvent = {
eventId: 1,
priority: emitter.EventPriority.LOW
};
let eventData: emitter.EventData = {
data: {
content: 'c',
id: 1,
isEmpty: false
}
};
// 发送eventId为1的事件,事件内容为eventData
emitter.emit(event, eventData);
EventHub提供了线程内发送和处理事件的能力,包括对事件订阅、取消订阅、触发事件等。以UIAbility组件与UI之间的数据同步为例,具体使用方法可以参考UIAbility组件与UI的数据同步。