鸿蒙Next公共事件订阅如何实现

在鸿蒙Next系统中,想要实现公共事件的订阅功能,但不太清楚具体的实现步骤和注意事项。请问应该如何正确使用相关API进行事件订阅?能否提供一个简单的代码示例说明订阅和取消订阅的完整流程?另外,在订阅过程中有哪些常见的错误需要避免?

2 回复

鸿蒙Next公共事件订阅?简单!

  1. 定义事件:CommonEventPublishInfo 配好权限和参数。
  2. 订阅:CommonEventManager.subscribe(),记得加权限和回调。
  3. 发布:CommonEventManager.publish() 一发入魂。
  4. 收工前记得unsubscribe(),别让事件偷偷加班!
    (代码虽短,小心权限坑,记得在config.json里声明!)

更多关于鸿蒙Next公共事件订阅如何实现的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在鸿蒙Next(HarmonyOS Next)中,公共事件订阅通过事件管理模块实现,允许应用订阅系统或自定义的公共事件,并在事件发布时接收通知。以下是实现步骤和示例代码:

实现步骤

  1. 导入模块:使用 @ohos.commonEventManager 模块。
  2. 定义订阅信息:配置事件名称、权限等参数。
  3. 创建订阅者:调用 createSubscriber 方法。
  4. 订阅事件:使用 subscribe 方法注册订阅者。
  5. 处理事件:在回调中接收事件数据。
  6. 取消订阅:在适当时机调用 unsubscribe 方法。

示例代码

import commonEventManager from '@ohos.commonEventManager';

// 1. 定义订阅信息
let subscribeInfo = {
  events: ["usual.event.SCREEN_ON"] // 订阅屏幕亮起事件
};

// 2. 创建订阅者回调
let subscriber = {
  onReceive: (data) => {
    console.info("收到公共事件,数据:" + JSON.stringify(data));
  },
  onDestroy: () => {
    console.info("订阅者被销毁");
  }
};

// 3. 订阅事件
commonEventManager.createSubscriber(subscribeInfo, (err, subscriber) => {
  if (err) {
    console.error("创建订阅者失败: " + JSON.stringify(err));
    return;
  }
  commonEventManager.subscribe(subscriber, (err) => {
    if (err) {
      console.error("订阅事件失败: " + JSON.stringify(err));
    } else {
      console.info("订阅成功");
    }
  });
});

// 4. 取消订阅(例如在页面销毁时)
// commonEventManager.unsubscribe(subscriber, (err) => {
//   if (err) {
//     console.error("取消订阅失败");
//   }
// });

注意事项

  • 权限:部分系统事件需要声明相应权限(如屏幕事件需 ohos.permission.COMMON_EVENT_SCREEN_ON)。
  • 生命周期:确保在组件销毁时取消订阅,避免资源泄漏。
  • 事件列表:可订阅系统预定义事件(如网络变化、电池状态)或自定义事件。

通过以上步骤,即可实现鸿蒙Next的公共事件订阅功能。

回到顶部