0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

鸿蒙开发之EventHub

王程 来源:jf_75796907 作者:jf_75796907 2024-02-21 14:32 次阅读

EventHub模块提供了事件中心,提供订阅、取消订阅、触发事件的能力。

NOTE
本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。

本模块接口仅可在Stage模型下使用。

使用说明

在使用eventHub的功能前,需要通过Ability实例的成员变量context获取。

import Ability from '@ohos.app.ability.UIAbility';
export default class MainAbility extends Ability {
    func1(){
        console.log('func1 is called');
    }
    onForeground() {
        this.context.eventHub.on('123', this.func1);
    }
}

EventHub.on

on(event: string, callback: Function): void;

订阅指定事件。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数

wKgZomXVmMKAQfJdAABOX-HIl_0501.png


示例:

import Ability from '@ohos.app.ability.UIAbility';

export default class MainAbility extends Ability {
    onForeground() {
        this.context.eventHub.on('123', this.func1);
        this.context.eventHub.on('123', () => {
            console.log('call anonymous func 1');
        });
        // 结果:
        // func1 is called
        // call anonymous func 1
        this.context.eventHub.emit('123'); 
    }
    func1() {
        console.log('func1 is called');
    }
}

EventHub.off

off(event: string, callback?: Function): void;

取消订阅指定事件。当callback传值时,取消订阅指定的callback;未传值时,取消订阅该事件下所有callback。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数:

wKgaomXVmMqAanYCAABgKfU7jV8532.png


示例:

import Ability from '@ohos.app.ability.UIAbility';

export default class MainAbility extends Ability {
    onForeground() {
        this.context.eventHub.on('123', this.func1);
        this.context.eventHub.off('123', this.func1); //取消订阅func1
        this.context.eventHub.on('123', this.func1);
        this.context.eventHub.on('123', this.func2);
        this.context.eventHub.off('123');  //取消订阅func1和func2
    }
    func1() {
        console.log('func1 is called');
    }
    func2() {
        console.log('func2 is called');
    }
}

EventHub.emit

emit(event: string, …args: Object[]): void;

触发指定事件。

系统能力:SystemCapability.Ability.AbilityRuntime.Core

参数:

wKgZomXVmNGAL1pcAABpIeJSjrQ994.png

示例:

import Ability from '@ohos.app.ability.UIAbility';

export default class MainAbility extends Ability {
    onForeground() {
        this.context.eventHub.on('123', this.func1);
        // 结果:
        // func1 is called,undefined,undefined
        this.context.eventHub.emit('123');
        // 结果:
        // func1 is called,1,undefined
        this.context.eventHub.emit('123', 1);
        // 结果:
        // func1 is called,1,2
        this.context.eventHub.emit('123', 1, 2);
    }
    func1(a, b) {
        console.log('func1 is called,' + a + ',' + b);
    }
}

审核编辑 黄宇


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 鸿蒙
    +关注

    关注

    57

    文章

    2305

    浏览量

    42709
收藏 人收藏

    评论

    相关推荐

    鸿蒙开发接口公共事件与通知:【application/EventHub (EventHub)】

    EventHub模块提供了事件中心,提供订阅、取消订阅、触发事件的能力。
    的头像 发表于 05-25 16:31 699次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>接口公共事件与通知:【application/<b class='flag-5'>EventHub</b> (<b class='flag-5'>EventHub</b>)】

    鸿蒙设备学习菜鸟指南》 【索引及PDF和工具分享】

    本帖最后由 HonestQiao 于 2020-11-3 14:29 编辑 《鸿蒙设备学习菜鸟指南》 【目录索引】本帖为索引贴,各节的内容,将逐步发布。本菜鸟指南的写作目的,是为了让新上手
    发表于 10-30 13:14

    鸿蒙设备学习菜鸟指南》 【五、搭建开发环境】

    ` 本帖最后由 HonestQiao 于 2020-10-30 14:00 编辑 《鸿蒙设备学习菜鸟指南》 【五、搭建开发环境】[目录索引]五、搭建开发环境 我们首先使用最简化的
    发表于 10-30 13:59

    鸿蒙设备学习菜鸟指南》【七、开发

    鸿蒙设备学习菜鸟指南》【七、开发】[目录索引]七、开发开发部分,我们在这里面,就不详细讲了,大家可以根据官方文章来操作。当我们使用最简化
    发表于 11-01 11:41

    【HarmonyOS HiSpark AI Camera试用连载 】初遇鸿蒙系统—6.基于HarmonyOS鸿蒙—北向HAP应用开发2048小游戏

    基于HarmonyOS鸿蒙——北向HAP应用开发2048小游戏玩法:基本玩法定时1分钟 刷分模式..........(待开发)HAP包: 大家自取去玩吧哈哈!!后续还会添加一些新功能
    发表于 12-09 05:06

    鸿蒙原生应用/元服务开发-Stage模型能力接口(五)

    说明 Common模块将二级模块API组织在一起方便开发者进行导出。本模块首批接口从API version 9开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。本模块接口仅可
    发表于 12-15 15:11

    鸿蒙系统是基于什么开发

    鸿蒙系统作为华为的备用方案,首先必须要考虑的就是兼容性和开放性,这样更加自由的Linux自然就是首选,由于Linux可以运行在多种硬件平台上,所以基于此开发鸿蒙系统可以尽可能的兼容适配更多的硬件
    的头像 发表于 07-01 16:43 1.6w次阅读

    鸿蒙系统是基于什么开发

    争议,那么鸿蒙系统到底是基于什么开发的呢?下面小编就为大家带来鸿蒙系统是基于什么开发的答案。 鸿蒙系统是基于什么
    的头像 发表于 07-05 17:12 1.2w次阅读

    EventHub开源事件分析平台

    EventHub.zip
    发表于 04-27 09:19 1次下载
    <b class='flag-5'>EventHub</b>开源事件分析平台

    鸿蒙ArkUI开发-Tabs组件的使用

    鸿蒙ArkUI开发-Tabs组件的使用
    的头像 发表于 01-19 16:01 1718次阅读
    <b class='flag-5'>鸿蒙</b>ArkUI<b class='flag-5'>开发</b>-Tabs组件的使用

    鸿蒙开发【设备开发基础知识】

    鸿蒙开发基础知识讲解
    的头像 发表于 01-29 18:44 934次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>【设备<b class='flag-5'>开发</b>基础知识】

    鸿蒙开发用什么语言?

    两种开发方向 我们常说鸿蒙开发,但是其实鸿蒙开发分为两个方向: 一个是系统级别的开发,比如驱动,
    的头像 发表于 01-30 16:12 1467次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>用什么语言?

    鸿蒙开发教程

    去年8 月份华为发布会上,华为发布了HarmonyOS NEXT预览版,宣布不再兼容安卓应用。大家期待的纯血鸿蒙终于要来临了,next 预览版本现在已经开放申请渠道了,Next 开发者预览版本目前只
    的头像 发表于 01-31 17:11 708次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>教程

    使用 Taro 开发鸿蒙原生应用 —— 快速上手,鸿蒙应用开发指南

    随着鸿蒙系统的不断完善,许多应用厂商都希望将自己的应用移植到鸿蒙平台上。最近,Taro 发布了 v4.0.0-beta.x 版本,支持使用 Taro 快速开发鸿蒙原生应用,也可将现有的
    的头像 发表于 02-02 16:09 809次阅读
    使用 Taro <b class='flag-5'>开发</b><b class='flag-5'>鸿蒙</b>原生应用 —— 快速上手,<b class='flag-5'>鸿蒙</b>应用<b class='flag-5'>开发</b>指南

    鸿蒙NEXT南向开发案例:【智能台灯】

    鸿蒙南向开发智能台灯案例
    的头像 发表于 04-03 18:00 920次阅读
    <b class='flag-5'>鸿蒙</b>NEXT南向<b class='flag-5'>开发</b>案例:【智能台灯】