HarmonyOS 5.0应用开发——全局广播的使用

【高心星出品】

文章目录

      • 全局广播的使用
        • 公共事件
          • 接受系统公共事件原理
        • 发布与订阅自定义公共事件
        • 订阅系统事件

全局广播的使用

全局广播可以用来做应用间通信,进程间通信,包含订阅、发布等功能。

公共事件

CES(Common Event Service,公共事件服务)为应用程序提供订阅、发布、退订公共事件的能力。

公共事件从系统角度可分为:系统公共事件和自定义公共事件。

  • 系统公共事件:CES内部定义的公共事件,当前仅支持系统应用和系统服务发布,例如HAP安装、更新、卸载等公共事件。目前支持的系统公共事件请参见系统公共事件列表。
  • 自定义公共事件:应用定义的公共事件,可用于实现跨进程的事件通信能力。
接受系统公共事件原理

每个应用都可以按需订阅公共事件,订阅成功,当公共事件发布时,系统会将其发送给对应的应用。这些公共事件可能来自系统、其他应用和应用自身。

在这里插入图片描述

发布与订阅自定义公共事件

案例功能:在Index页面订阅自定义公共事件,Index页面跳转到other页面,other页面发布全局广播,Index页面订阅者接受广播事件并弹窗显示数据。

在这里插入图片描述

Index页面代码

import { commonEventManager } from '@kit.BasicServicesKit';
import { promptAction, router } from '@kit.ArkUI';@Entry
@Component
struct Index {@State message: string = '';// 创建订阅对象aboutToAppear(): void {let  info = commonEventManager.createSubscriberSync({ events: ['event_01']})// 订阅广播commonEventManager.subscribe(info,(err,data)=>{if(err){console.error('gxxt 订阅信息错误: ',err.message)return}// 接收发来的信息并弹窗显示AlertDialog.show({message:'这是Index页面广播接受的信息: '+data.data,confirm:{value:'确定',action:()=>{}}})})}build() {Column() {Text('Index页面').fontSize(30).fontWeight(FontWeight.Bolder).margin(20)Button('跳转').width('60%').onClick(() => {router.pushUrl({url:'pages/other'})}).margin(20)}.height('100%').width('100%')}aboutToDisappear(): void {//  解除订阅广播// commonEventManager.unsubscribe(this.info)}
}

other页面代码

import { commonEventManager } from '@kit.BasicServicesKit';@Entry
@Component
struct Other {@State message: string = 'Hello World';build() {Column(){Button('发布广播').width('60%').onClick(()=>{// 发送广播,携带数据commonEventManager.publish('event_01',{data:'我来自other页面的数据'},(err)=>{if(err){console.error('gxxt 广播发送错误: '+err.message)}console.log('gxxt 广播放松成功!')})})}.height('100%').width('100%').justifyContent(FlexAlign.Center)}
}
订阅系统事件

案例功能:在页面订阅飞行模式转变的系统事件,如果接受到该事件,就将该事件的数据显示在文本框中。

在这里插入图片描述

Eventpage页面代码

import { commonEventManager } from '@kit.BasicServicesKit';@Entry
@Component
struct Eventpage {@State message: string = '手机状态: ';aboutToAppear(): void {// 飞行模式转变的事件let info = commonEventManager.createSubscriberSync({events: [commonEventManager.Support.COMMON_EVENT_AIRPLANE_MODE_CHANGED]})commonEventManager.subscribe(info, (err, data) => {if (err) {console.error('gxxt 订阅飞行模式转变广播失败!')return}this.message = '手机状态: ' + data.data})}build() {Column() {Text(this.message).fontSize(30).fontWeight(FontWeight.Bolder).border({ width: 3, color: Color.Red })}.height('100%').width('100%').justifyContent(FlexAlign.Center)}
}
ght.Bolder).border({ width: 3, color: Color.Red })}.height('100%').width('100%').justifyContent(FlexAlign.Center)}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/35840.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

ceph存储池

1、存储池 1、存储池的概念 存储池就是ceph的逻辑分区,专门用来存储对象的 特点 将文件切片成对象,通过hash算法,找到存储池中的pg,池中的pg根据crush算法找到osd节点 存储中的PG数量对性能有重要的影响,过多和过少…

Ollama记录

先在官网下载Ollama 模型下载 ollama run qwen2:0.5b 可以快速部署很多模型 方便 可以替换openai api key from openai import OpenAIclient OpenAI(base_url https://127.0.0.1:11434/v1,api_keyollama, # required, but unused )response client.chat.completions.…

锻造船用发动机动力系统,铸强船舶“心脏”

船舶是海洋、湖泊及河流中重要的水上交通工具,不仅能够促进海上经济的发展,还能够保卫国家的制海权。船舶动力装置,也就是船舶的核心动力源——船用发动机动力系统对船舶的重要作用不言自明,关系到船舶的性能质量,能够…

LIN状态管理

文章目录 前言一、状态管理二、实现过程三、response_error信号的变化条件四、节点内部报告五、测试应用方式1:LIN ISC方式2:CAPL脚本方式 前言 在LIN专栏的文章中,我们介绍了 LIN的网络管理:LIN网络管理:休眠&唤…

云帆在线学习考试系统对国产化数据库的支持情况说明

云帆在线学习考试系统对国产化数据库的支持情况说明 云帆学习考试系统是一款优秀的学习和考试系统!多年以来一直深耕在线教育板块,积累了丰富的行业经验,多年来的产品和技术沉淀,服务了众多政府机构、知名高校、企事业单位。 今…

反向传播算法中的误差项

背景 在反向传播算法中,我们需要计算每个神经元的误差项,以便更新网络中的权重。对于输出层的神经元,误差项的计算公式如下: 其中: E是损失函数(例如均方误差)。 zk 是输出层神经元的加权输入&a…

如何高效整合金蝶云星辰采购入库单与聚水潭系统

星辰-采购入库单集成到聚水潭的技术实现 在企业信息化管理中,数据的高效流转和准确对接至关重要。本文将分享一个实际案例:如何通过轻易云数据集成平台,将金蝶云星辰V2系统中的采购入库单数据无缝集成到聚水潭系统中,实现业务流程…

Uniapp的App环境下使用Map获取缩放比例

概述 目前我试过的就是你用vue后缀是拿不到比例的你可以用nvue当然uniapp的uvue应该是更加可以的我使用的是高德所以你得在高德的后台声请原生的Android的key才可以如果是vue3的开发模式的话不用使用this来获取当前对象使用scale对象来接受和改变缩放比例会比较友好然后直接走…

C++入门项目:Linux下C++轻量级Web服务器 项目详解(小白篇)

拿到一个项目首先先跑通,然后再慢慢来看代码,关于怎么将这个项目跑通,上一篇已经讲过,感兴趣的小伙伴可以移步下面的链接,或者其他博主的教程。 C入门项目:Linux下C轻量级Web服务器 跑通|运行|测试&#xf…

RuoYi集成Drools,并实现数据库获取规则

Drools是一个开源的业务规则管理系统(BRMS)和规则引擎,它允许开发者以接近自然语言的形式定义业务规则,并将这些规则应用到应用程序中,实现业务逻辑的自动化和决策过程的优化。Drools基于Java语言开发,使用…

什么是API接口?如何调用API接口?

一、什么是 API 接口 定义 API(Application Programming Interface)即应用程序编程接口。它是一组定义好的规则和协议,允许不同的软件应用程序之间进行通信和交互。可以把 API 想象成是餐厅的服务员,当顾客(一个软件应…

BurpSuite-6(验证码识别)

声明:学习视频来自b站up主 泷羽sec,如涉及侵权马上删除文章 感谢泷羽sec 团队的教学 视频地址:burp(6)暴力破解与验证码识别绕过_哔哩哔哩_bilibili 一、下载 github地址:GitHub - f0ng/captcha-killer-modified: captcha-killer…

【JavaEE】多线程(7)

一、JUC的常见类 JUC→java.util.concurrent,放了和多线程相关的组件 1.1 Callable 接口 看以下从计算从1加到1000的代码: public class Demo {public static int sum;public static void main(String[] args) throws InterruptedException {Thread …

Go 程序编译的步骤

Go程序编译的步骤 词法分析(Lexical Analysis) Go编译器首先对源代码进行词法分析,将代码拆分成标记(tokens),这些标记是编程语言的最小单位,如关键字、变量名、操作符等。 作用:生…

SD-WAN服务商应该怎么挑选?

随着企业对高效、灵活网络的需求不断增长,SD-WAN技术逐渐成为市场热点。然而,面对众多服务商的多样化方案,如何选择最适合自己企业的服务商是一个重要的问题。SD-WAN服务商之间在技术、功能和服务等方面存在差异,企业需要根据自身…

三相LCL并网逆变器--仿真验证

根据前面的博客的讲解,确定主电路参数如下 名称/单位 值 名称/单位 值 额定功率P/kW 20 开关频率fsw/kHz 10 母线电压Udc/V 720 逆变器侧电感L1/mH 1.8 额定电流Ireated/A 30 并网测电感L2/mH 0.4 PCC电压/Us/V 220 滤波电容C/uF 4.7 电网频率f…

基于SpringBoot+Vue的服装生产管理系统-无偿分享 (附源码+LW+调试)

目录 1. 项目技术 2. 功能菜单 3. 部分功能截图 4. 研究背景 5. 设计原则 6. 可行性分析 6.1 技术可行性 6.2 经济可行性 6.3 操作可行性 7. 系统设计 7.1 系统流程和逻辑 7.2 系统结构 8. 数据库设计 8.1 数据库ER图 (1)管理员实体属性图…

告别充电焦虑:移动充电机器人的革命性解决方案

移动充电机器人作为新能源汽车领域的黑科技,正逐渐崭露头角。它的出现为电动汽车充电带来了全新的解决方案,解决了传统充电方式的诸多痛点。 新能源汽车具有诸多优点,如科技含量高、噪音小、使用成本低等,但 “续航焦虑”“充电焦…

【启明智显分享】ESP32-P4方案4.3寸触摸屏来袭!支持MIPI CSI摄像头接口

家人们,你们一直在等的ESP32-P4方案4.3寸触摸屏它来了! 启明智显全新推出的ESP32-P4 4.3寸IPS触摸屏,搭载强大的双核400MHz RISC-V处理器,配备32MB PSRAM和16MB FLASH,分辨率800*480,性能和视觉体验再次突…