HarmonyOS 鸿蒙Next ArkTS语言教程入门学习第52天,公共事件简介。
HarmonyOS 鸿蒙Next ArkTS语言教程入门学习第52天,公共事件简介。
1、进程模型概述
HarmonyOS的进程模型:
- 应用中(同一包名)的所有UIAbility运行在同一个独立进程中。
- WebView拥有独立的渲染进程。
基于HarmonyOS的进程模型,系统提供了公共事件机制用于一对多的通信场景,公共事件发布者可能存在多个订阅者同时接收事件。
2、公共事件简介
HarmonyOS通过CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力。
公共事件从系统角度可分为:系统公共事件和自定义公共事件。
- 系统公共事件:CES内部定义的公共事件,只有系统应用和系统服务才能发布,例如HAP安装,更新,卸载等公共事件。
- 目前支持的系统公共事件详见系统公共事件定义。
- 自定义公共事件:应用自定义一些公共事件用来实现跨进程的事件通信能力。
公共事件按发送方式可分为:无序公共事件、有序公共事件和粘性公共事件。
- 无序公共事件:CES转发公共事件时,不考虑订阅者是否接收到,且订阅者接收到的顺序与其订阅顺序无关。
- 有序公共事件:CES转发公共事件时,根据订阅者设置的优先级等级,优先将公共事件发送给优先级较高的订阅者,等待其成功接收该公共事件之后再将事件发送给优先级较低的订阅者。如果有多个订阅者具有相同的优先级,则他们将随机接收到公共事件。
- 粘性公共事件:能够让订阅者收到在订阅前已经发送的公共事件就是粘性公共事件。普通的公共事件只能在订阅后发送才能收到,而粘性公共事件的特殊性就是可以先发送后订阅。发送粘性事件必须是系统应用或系统服务,且需要申请ohos.permission.COMMONEVENT_STICKY权限,配置方式请参阅访问控制授权申请指导。
每个应用都可以按需订阅公共事件,订阅成功,当公共事件发布时,系统会将其发送给对应的应用。这些公共事件可能来自系统、其他应用和应用自身。
图1 公共事件示意图
更多关于HarmonyOS 鸿蒙Next ArkTS语言教程入门学习第52天,公共事件简介。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在HarmonyOS(鸿蒙系统)中,公共事件是一种用于跨应用或跨设备通信的机制。ArkTS语言作为鸿蒙系统的开发语言,提供了对公共事件的支持。公共事件允许开发者定义和发布事件,其他应用或设备可以订阅这些事件并做出响应。
公共事件的主要特点包括:
-
事件发布与订阅:开发者可以定义一个事件,并发布它。其他应用或设备可以订阅该事件,并在事件发生时执行相应的操作。
-
跨应用通信:公共事件机制使得不同应用之间可以进行通信,无需直接依赖对方的代码或接口。
-
跨设备通信:公共事件支持在多个设备之间进行事件传递,适用于分布式场景。
-
事件过滤:开发者可以设置事件的条件(如设备类型、地理位置等),只有满足条件的事件才会被接收。
在ArkTS中,使用CommonEventManager
类来管理公共事件。通过publish
方法发布事件,通过subscribe
方法订阅事件。事件的数据可以通过CommonEventData
对象进行传递。
示例代码:
import commonEventManager from '@ohos.commonEventManager';
import commonEvent from '@ohos.commonEvent';
// 发布事件
let eventData: commonEvent.CommonEventData = {
code: 1,
data: "Hello, HarmonyOS"
};
commonEventManager.publish("com.example.MY_EVENT", eventData, (err) => {
if (err) {
console.error("Failed to publish event: " + err.message);
} else {
console.log("Event published successfully");
}
});
// 订阅事件
let subscriber: commonEvent.CommonEventSubscriber = {
onReceive: (event: commonEvent.CommonEventData) => {
console.log("Received event: " + event.data);
}
};
commonEventManager.subscribe("com.example.MY_EVENT", subscriber, (err) => {
if (err) {
console.error("Failed to subscribe event: " + err.message);
} else {
console.log("Event subscribed successfully");
}
});
以上代码展示了如何在ArkTS中发布和订阅公共事件。通过这种方式,开发者可以实现应用或设备之间的高效通信。
更多关于HarmonyOS 鸿蒙Next ArkTS语言教程入门学习第52天,公共事件简介。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next中,公共事件是一种系统级的消息传递机制,允许应用之间或应用与系统之间进行通信。通过公共事件,开发者可以发布和订阅特定类型的事件,实现跨应用的交互。例如,当设备电量低时,系统可以发布一个公共事件,订阅了该事件的应用可以接收到通知并做出响应。ArkTS提供了丰富的API来管理公共事件,包括事件的发布、订阅、取消订阅等操作,帮助开发者高效实现应用间的协同工作。