鸿蒙Next公共事件订阅配置方法
在鸿蒙Next中,如何配置公共事件的订阅?具体需要哪些步骤和注意事项?能否提供一个完整的示例代码?
2 回复
鸿蒙Next公共事件订阅?简单!
- 在
config.json里声明权限,比如"reqPermissions": [{"name": "ohos.permission.COMMON_EVENT"}]。 - 代码里用
CommonEventManager.createSubscriber()搞个订阅者,再subscribe()收事件。 - 记得在
onDestroy()里unsubscribe(),别让手机骂你“内存泄漏”!
搞定,代码跑起来就像追剧一样丝滑~ 😎
更多关于鸿蒙Next公共事件订阅配置方法的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
在鸿蒙Next(HarmonyOS NEXT)中,公共事件订阅可通过以下步骤配置:
1. 声明权限
在 module.json5 配置文件中添加订阅公共事件所需权限:
{
"module": {
"requestPermissions": [
{
"name": "ohos.permission.COMMONEVENT_STICKY" // 根据事件类型调整权限名
}
]
}
}
常用权限包括:
ohos.permission.COMMONEVENT_STICKY(粘性事件)ohos.permission.SUBSCRIBE_COMMON_EVENT(通用订阅)
2. 订阅公共事件
在代码中实现订阅逻辑:
import commonEventManager from '@ohos.commonEventManager';
import commonEvent from '@ohos.commonEvent';
import { BusinessError } from '@ohos.base';
// 定义订阅参数
let subscribeInfo: commonEvent.CommonEventSubscribeInfo = {
events: ["usual.event.SCREEN_ON"] // 订阅事件类型(示例:屏幕点亮事件)
};
// 创建订阅者对象
let subscriber: commonEventManager.CommonEventSubscriber | null = null;
commonEventManager.createSubscriber(subscribeInfo, (err: BusinessError, data: commonEventManager.CommonEventSubscriber) => {
if (err) {
console.error(`订阅失败,错误码:${err.code}`);
return;
}
subscriber = data;
console.info("订阅成功");
});
// 注册订阅者回调
if (subscriber !== null) {
commonEventManager.subscribe(subscriber, (err: BusinessError, data: commonEvent.CommonEventData) => {
if (err) {
console.error(`接收事件失败,错误码:${err.code}`);
return;
}
console.info("收到公共事件,数据:" + JSON.stringify(data));
});
}
3. 取消订阅
在适当时机(如页面销毁)取消订阅:
if (subscriber !== null) {
commonEventManager.unsubscribe(subscriber, (err: BusinessError) => {
if (err) {
console.error(`取消订阅失败,错误码:${err.code}`);
return;
}
console.info("取消订阅成功");
});
}
注意事项:
- 事件类型:需使用系统预定义事件(如
usual.event.SCREEN_ON),或自定义事件(需符合命名规范)。 - 生命周期管理:确保在组件销毁时取消订阅,避免资源泄漏。
- 权限校验:部分系统事件需要对应权限,需在配置文件中声明并在运行时申请。
通过以上步骤即可完成鸿蒙Next公共事件的订阅与管理。

