首页 > 系统相关 >鸿蒙 NEXT 开发中,使用公共事件进行进程间通信

鸿蒙 NEXT 开发中,使用公共事件进行进程间通信

时间:2025-01-02 12:11:52浏览次数:1  
标签:DOMAIN commonEventManager 鸿蒙 err NEXT 间通信 TAG 事件 应用

大家好,我是 V 哥,在鸿蒙 NEXT 开发中,使用公共事件进行进程间通信(IPC)是一种常见的做法。下面我将提供一个完整的业务代码示例,并解释逻辑关系,以便即使是初学者也能按照步骤进行实操,废话不多说,直接上干货。

业务场景

假设我们有两个应用,应用A和应用B。应用A需要在电量低时通知应用B执行一些操作,比如降低功耗或提醒用户充电。

步骤1:导入必要的模块

首先,我们需要导入鸿蒙提供的公共事件管理模块和其他必要的模块。

import { BusinessError, commonEventManager } from '@ohos.BasicServicesKit';
import { hilog } from '@ohos.PerformanceAnalysisKit';

步骤2:定义标签和域编号

为了在日志中标识我们的应用,我们需要定义一个标签和一个域编号。

const TAG: string = 'PowerSavingApp';
const DOMAIN_NUMBER: number = 0xFF00;

步骤3:创建订阅者信息

在应用B中,我们需要创建一个订阅者来监听应用A发布的电量低事件。

let subscriber: commonEventManager.CommonEventSubscriber | null = null;
let subscribeInfo: commonEventManager.CommonEventSubscribeInfo = {
  events: ['device.battery.low'], // 订阅电量低事件
};

步骤4:创建订阅者对象

使用commonEventManager.createSubscriber方法创建订阅者对象。

commonEventManager.createSubscriber(subscribeInfo, (err: BusinessError, data: commonEventManager.CommonEventSubscriber) => {
  if (err) {
    hilog.error(DOMAIN_NUMBER, TAG, `Failed to create subscriber. Code is ${err.code}, message is ${err.message}`);
    return;
  }
  hilog.info(DOMAIN_NUMBER, TAG, 'Succeeded in creating subscriber.');
  subscriber = data;
});

步骤5:订阅公共事件

使用commonEventManager.subscribe方法订阅事件。

if (subscriber !== null) {
  commonEventManager.subscribe(subscriber, (err: BusinessError, data: commonEventManager.CommonEventData) => {
    if (err) {
      hilog.error(DOMAIN_NUMBER, TAG, `Failed to subscribe common event. Code is ${err.code}, message is ${err.message}`);
      return;
    }
    handleLowBatteryEvent(data);
  });
} else {
  hilog.error(DOMAIN_NUMBER, TAG, `Need to create subscriber`);
}

步骤6:处理电量低事件

定义一个函数来处理电量低事件。

function handleLowBatteryEvent(data: commonEventManager.CommonEventData) {
  hilog.info(DOMAIN_NUMBER, TAG, `Received low battery event. Taking power saving measures.`);
  // 这里可以添加降低功耗的具体操作,例如关闭后台任务、降低屏幕亮度等
}

步骤7:发布公共事件

在应用A中,当检测到电量低时,发布一个电量低事件。

let options: commonEventManager.CommonEventPublishData = {
  code: 1,
  data: 'Manual power saving triggered',
};
commonEventManager.publish('device.battery.low', options, (err: BusinessError) => {
  if (err) {
    hilog.error(DOMAIN_NUMBER, TAG, 'PublishCallBack err = ' + JSON.stringify(err));
  } else {
    hilog.info(DOMAIN_NUMBER, TAG, 'Publish success');
  }
});

逻辑关系解释

  1. 创建订阅者:应用B创建一个订阅者,用于监听特定的事件(如电量低)。
  2. 订阅事件:应用B通过subscribe方法订阅特定的事件。
  3. 处理事件:当应用A发布电量低事件时,应用B的handleLowBatteryEvent函数会被触发,执行相应的功耗降低操作。
  4. 发布事件:应用A在检测到电量低时发布事件,通知应用B。

通过以上步骤,我们可以实现应用间的进程间通信。这个示例展示了如何使用鸿蒙的公共事件服务来实现跨应用的动态交互。希望这个示例能帮助你理解并实现自己的跨应用通信需求。

标签:DOMAIN,commonEventManager,鸿蒙,err,NEXT,间通信,TAG,事件,应用
From: https://www.cnblogs.com/wgjava/p/18647360

相关文章

  • 有度即时通参加广东鸿蒙生态伙伴论坛,共同推动鸿蒙生态建设
    近日,HDD·广东鸿蒙生态伙伴论坛在广州隆重举行。此次论坛由华为技术有限公司主办,广东软件行业协会协办,汇聚了众多业内精英和技术专家,共同探讨鸿蒙生态的最新进展与创新应用。有度即时通作为华为鸿蒙生态的重要合作伙伴参与此次盛会,与众多伙伴共同推进鸿蒙生态建设。    ......
  • wx.nextTick
    wx.nextTick(functioncallback)基础库2.2.3开始支持,低版本需做兼容处理。小程序插件:支持,需要小程序基础库版本不低于2.7.1微信Windows版:支持微信Mac版:支持微信鸿蒙OS版:支持功能描述延迟一部分操作到下一个时间片再执行。(类似于setTimeout)参数functionca......
  • 鸿蒙应用开发者认证题库
    判断题1. “一次开发,多端部署”指的是一个工程,一次开发上架,多端按需部署。为了实现这一目的,HarmonyOS提供了多端开发环境,多端开发能力以及多端分发机制。正确(True)错误(False)正确 2. 《鸿蒙生态应用开发白皮书》全面阐释了鸿蒙生态下应用开发核心理念、关键能......
  • 谁还在期待2025?他们说最好的不是过去,是NEXT
    2024很快就要画上句点,这一年对很多人来说都不太容易,在不确定性中困惑着,焦虑着。回望这一年,我们却也深深铭记那些“高光时刻”:不被看好的运动健儿,在世界瞩目中摘回属于他的金牌;减重一百斤遭到质疑,她直接把过程搬上大银幕;还有人给自己半年时间,开启从川藏到海岸线的骑行…......
  • 鸿蒙元应用与卡片使用 @LocalStorageProp 进行通讯的技术分享
    ​ 在鸿蒙系统(HarmonyOS)的开发中,@LocalStorageProp是一个非常有用的装饰器,用于在组件之间共享状态或数据。特别是在卡片(Card)和元服务(MetaService)之间进行通讯时,@LocalStorageProp可以帮助我们实现数据的持久化和同步。本文将通过一个具体的案例,详细介绍如何使用@LocalStorag......
  • 鸿蒙保存图片到相册
    在其它手机端,若想保存图片到相册,需要申请对应的权限,而鸿蒙中对应的权限为受限开放权限,普通应用一般不让申请,这个时候我们可以使用安全保存控件来临时申请权限,用于保存图片到相册。受限开放权限应用权限分为三类,一类是对所有应用开放,所有应用均可申请使用;一类是受限开放权限,仅少......
  • 你有看过vue的nextTick源码吗?
    是的,我了解过Vue的$nextTick源码。$nextTick是Vue中一个非常重要的机制,它允许我们在DOM更新后执行某些操作,确保我们可以获取到更新后的DOM状态。下面我将对$nextTick的源码进行简要的解析和归纳:$nextTick的基本原理:Vue在更新DOM时是异步执行的。当数据发生变化时,Vue会将这个......
  • 鸿蒙1.3:资源文件的使用
    一、资源文件介绍应用开发中使用的各类自定义资源文件统一存放于应用的resources目录下resources目录①base目录与限定词目录②rawfile目录基础目录结构resources|—base//默认存在的目录||—element|||—string.json||—media|||—icon.png|—en_GB-ve......
  • 【迅为】一图了解OpenHarmony4.1开发资料,快速上手RK3568开发板+鸿蒙系统新玩法
    【迅为】一图了解OpenHarmony4.1开发资料,快速上手RK3568开发板+鸿蒙系统新玩法  什么是OpenHarmonyOpenHarmony是一款面向全场景的开源分布式操作系统,隶属于开放原子开源基金会。它基于传统单设备系统能力,创新性地支持多种终端形态,旨在为不同设备提供统一的操作系统底座,从而......
  • 《HarmonyOS第一课》焕新升级,赋能开发者快速掌握鸿蒙应用开发
    随着HarmonyOSNEXT发布,鸿蒙生态日益壮大,广大开发者对于系统化学习平台和课程的需求愈发强烈。近日,华为精心打造的《HarmonyOS第一课》全新上线,集“学、练、考”于一体,凭借多维融合的教学模式与系统课程设置,助力开发者快速掌握HarmonyOS应用开发技能。四大课程模块:搭建HarmonyOS......