鸿蒙next版开发:订阅应用事件(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了强大的应用事件订阅机制,允许开发者订阅和处理系统或应用级别的事件。这一功能对于监控应用行为、优化用户体验和进行性能分析至关重要。本文将详细介绍如何在ArkTS中订阅应用事件,并提供示例代码进行说明。
应用事件订阅基础
在ArkTS中,订阅应用事件主要通过hiAppEvent模块实现。该模块提供了添加和移除事件观察者的方法,以及设置事件参数和接收事件通知的接口。
核心接口
addWatcher(watcher: Watcher): AppEventPackageHolder:添加应用事件观察者,以添加对应用事件的订阅。removeWatcher(watcher: Watcher): void:移除应用事件观察者,以移除对应用事件的订阅。
开发步骤
- 导入模块:首先,需要导入
hiAppEvent和hilog模块,以便使用事件订阅和日志功能。
import { hiAppEvent, hilog } from '@kit.PerformanceAnalysisKit';
- 创建观察者:创建一个观察者对象,定义感兴趣的事件和回调函数。
hiAppEvent.addWatcher({name: "watcher",appEventFilters: [{domain: hiAppEvent.domain.OS,names: [hiAppEvent.event.APP_LAUNCH]}],onReceive: (domain: string, appEventGroups: Array<hiAppEvent.AppEventGroup>) => {hilog.info(0x0000, 'testTag', `HiAppEvent onReceive: domain=${domain}`);for (const eventGroup of appEventGroups) {hilog.info(0x0000, 'testTag', `HiAppEvent eventName=${eventGroup.name}`);for (const eventInfo of eventGroup.appEventInfos) {hilog.info(0x0000, 'testTag', `HiAppEvent eventInfo=${JSON.stringify(eventInfo)}`);}}}
});
- 设置事件参数:如果需要,可以设置事件的自定义参数。
let params: Record<string, hiAppEvent.ParamType> = {"test_data": 100,
};
hiAppEvent.setEventParam(params, hiAppEvent.domain.OS, hiAppEvent.event.APP_FREEZE).then(() => {hilog.info(0x0000, 'testTag', `HiAppEvent success to set event param`);
}).catch((err: BusinessError) => {hilog.error(0x0000, 'testTag', `HiAppEvent code: ${err.code}, message: ${err.message}`);
});
示例代码
以下是一个完整的示例,展示如何在ArkTS中订阅应用启动耗时事件:
@Entry
@Component
struct EventSubscriptionExample {build() {Column() {Button('Subscribe to App Launch Event').onClick(() => {import { hiAppEvent, hilog } from '@kit.PerformanceAnalysisKit';hiAppEvent.addWatcher({name: "watcher",appEventFilters: [{domain: hiAppEvent.domain.OS,names: [hiAppEvent.event.APP_LAUNCH]}],onReceive: (domain: string, appEventGroups: Array<hiAppEvent.AppEventGroup>) => {hilog.info(0x0000, 'testTag', `HiAppEvent onReceive: domain=${domain}`);for (const eventGroup of appEventGroups) {hilog.info(0x0000, 'testTag', `HiAppEvent eventName=${eventGroup.name}`);for (const eventInfo of eventGroup.appEventInfos) {hilog.info(0x0000, 'testTag', `HiAppEvent eventInfo=${JSON.stringify(eventInfo)}`);}}}});}).width('100%').height(50)}.width('100%').height('100%').padding(20);}
}
在这个示例中,我们创建了一个按钮,当点击按钮时,会添加一个观察者来订阅应用启动耗时事件。当事件发生时,会通过onReceive回调函数接收事件数据,并使用hilog打印日志信息。
结语
通过本文的介绍,你应该对如何在HarmonyOS 5.0中使用ArkTS订阅应用事件有了基本的了解。事件订阅是监控应用行为和优化用户体验的重要工具,合理利用这些事件可以使你的应用更加智能和响应用户的需求。希望本文能够帮助你在开发过程中更好地利用ArkTS的事件订阅机制。
相关文章:
鸿蒙next版开发:订阅应用事件(ArkTS)
在HarmonyOS 5.0中,ArkTS提供了强大的应用事件订阅机制,允许开发者订阅和处理系统或应用级别的事件。这一功能对于监控应用行为、优化用户体验和进行性能分析至关重要。本文将详细介绍如何在ArkTS中订阅应用事件,并提供示例代码进行说明。 应…...
F litter 开发之flutter_local_notifications
flutter_local_notifications 消息通知 flutter_local_notifications地址 flutter_local_notifications: ^18.0.1class NotificationHelper {//工厂模式调用该类时,默认调用此方法,将实例对象返回出去static NotificationHelper? _instance null;sta…...
springboot参数校验
springboot 参数校验 Validated 以及 Valid - 唏嘘- - 博客园 SpringBoot参数校验Validated、Valid_springboot validate-CSDN博客...
Spring生态学习路径与源码深度探讨
引言 Spring框架作为Java企业级开发中的核心框架,其丰富的生态系统和强大的功能吸引了无数开发者的关注。学习Spring生态不仅仅是掌握Spring Framework本身,更需要深入理解其周边组件和工具,以及源码的底层实现逻辑。本文将从Spring生态的学…...
C++:set详解
文章目录 前言一、set概念介绍二、set的使用1. 插入删除相关2. 查找相关1)find2)count3)lower_bound与upper_bound4)equal_range 三、set的值是不能修改的原理四、基于哈希表的set总结 前言 根据应用场景的不同,STL总…...
(一)- DRM架构
一,DRM简介 linux内核中包含两类图形显示设备驱动框架: FB设备:Framebuffer图形显示框架; DRM:直接渲染管理器(Direct Rendering Manager),是linux目前主流的图形显示框架; 1&am…...
Docker了解
Docker是一种容器化技术,它可以将应用程序和其依赖项打包到一个独立的、可移植的容器中,以便在不同的环境中运行。Docker基于Linux操作系统的容器化技术,可以提供更轻量、更快速、更灵活、更一致的应用部署和管理方式。 Docker的基本概念包括…...
【DL】YOLO11 OBB目标检测 | 模型训练 | 推理
本文进行YOLO11的旋转目标检测任务,旋转目标检测能够更精确地定位和描述那些非水平排列的目标,比如倾斜的飞机、船舶等。在原始的目标检测中,添加一个角度预测,实现定向边界框检测。 话不多说,先来个效果图!!! YOLO11中的旋转目标检测的特点 ▲更精确的定位:通过使用…...
vue读取本地excel文件并渲染到列表页面
1.安装插件(版本0.18.5) npm i xlsx 2.封装插件 <template><div class"container"><slot></slot></div> </template><script> import * as XLSX from xlsx export default {name: ReadExcel,props: {filePath: {type: …...
github 以及 huggingface下载模型和数据
runningcheese/MirrorSite: 镜像网站合集 (github.com) huggingface 下载模型和数据使用snapshot_download的方法 不会修改HuggingFace模型下载默认缓存路径?一篇教会你!_huggingface默认下载路径-CSDN博客 下载模型 使用snapshot_download 使用snapshot_down…...
使用 Vue 配合豆包MarsCode 实现“小恐龙酷跑“小游戏
作者:BLACK595 “小恐龙酷跑”,它是一款有趣的离线游戏,是Google给Chrome浏览器加的一个有趣的彩蛋。当我们浏览器断网时一只像素小恐龙便会出来提示断网。许多人认为这只是一个可爱的小图标, 但当我们按下空格后,小恐…...
51c视觉~合集6
我自己的原文哦~ https://blog.51cto.com/whaosoft/11603901 #CSWin-UNet 将自注意力机制集成到UNet中!CSWin-UNet:U型分割方法,显著提高计算效率和感受野交互!本文提出了CSWin-UNet,这是一种新颖的U型分割方法&…...
STM32(hal库)在串口中,USART和uart有什么区别?
在STM32的HAL库中,USART和UART都是用于串口通信的模块,但它们在功能特性和使用场景上存在一些区别。以下是对两者的详细比较: 一、功能特性 UART(通用异步收发器): 是一种串行、异步、全双工的通信协议。通…...
机器学习、深度学习面试知识点汇总
下面是本人在面试中整理的资料和文字,主要针对面试八股做浅显的总结,大部分来源于ChatGPT,中间有借鉴一些博主的优质文章,已经在各文中指出原文。有任何问题,欢迎随时不吝指正。 文章系列图像使用动漫 《星游记》插图…...
FPGA高速设计之Aurora64B/66B的应用与不足的修正
FPGA高速设计之Aurora64B/66B的应用与不足的修正 Aurora IP协议的特点 首先基于网上找到的一些资料,来讲述下Aurora高速协议的特点与相关的应用。Aurora 协议在 2002 年由 Xilinx 公司首次提出,是由Xilinx提供的一个开源、免费的链路层串行传输通信协议…...
如何通过PHP脚本自动推送WordPress文章至百度站长平台
想要提高网站在百度搜索中的曝光度?百度站长平台提供了一个非常方便的API接口,允许网站自动将新发布的内容推送至百度以加快收录。本文将带您一步步实现这一功能,帮助您的WordPress站点实现每日自动推送最新文章的URL至百度站长平台。 1. 前提条件 确保您有一个已安装并运行…...
ORA-01092 ORA-14695 ORA-38301
文章目录 前言一、MAX_STRING_SIZE--12C 新特性扩展数据类型 varchar2(32767)二、恢复操作1.尝试恢复MAX_STRING_SIZE参数为默认值2.在upgrade模式下执行utl32k.sql 前言 今天客户发来一个内部测试库数据库启动截图报错,描述是“上午出现服务卡顿,然后重…...
upload-labs通关练习---更新到15关
目录 环境搭建 第一关 方法一 修改文件类型 方法二 前端禁用JS绕过 第二关 方法一 修改Content-Type类型 方法二 修改上传文件类型 第三关 第四关 第五关 方法一 Windows大小写绕过 方法二 利用.user.ini 第六关 第七关 第八关 第九关 第十关 第十一关 第十二…...
WPF 应用程序中使用 Prism 框架时,有多种方式可以注册服务和依赖项
Prism 提供了更多的注册方式,适应不同的需求和场景。下面我会全面列出 IContainerRegistry 提供的所有常见注册方式,并附带相应的示例。1. 注册单例(Singleton) 注册单例类型服务,整个应用生命周期内只会创建一个实例&…...
【ESP32】ESP-IDF开发 | 低功耗管理+RTC唤醒和按键唤醒例程
1. 简介 ESP32支持5种低功耗模式,低功耗管理单元包括调压器、功耗控制器、电源开关单元、电源域隔离单元 (Isolation Cell) 等部分。 1.1 RTC单元 RTC单元是ESP32低功耗管理的核心,可用于管理低功耗模式的进入和退出,控制时钟源、PLL、电源开…...
终极XXMI启动器完整指南:一键管理所有米哈游游戏模组的免费神器
终极XXMI启动器完整指南:一键管理所有米哈游游戏模组的免费神器 【免费下载链接】XXMI-Launcher Modding platform for GI, HSR, WW and ZZZ 项目地址: https://gitcode.com/gh_mirrors/xx/XXMI-Launcher XXMI启动器是一款专为米哈游系列游戏设计的模组管理平…...
机器学习模型评估避坑指南:过调优与数据泄露的识别与防范
1. 项目概述与核心问题界定在机器学习项目的落地过程中,超参数调优几乎是每个从业者都会经历的环节。我们花费大量时间,尝试各种搜索策略——从网格搜索到贝叶斯优化,目标很明确:让模型在验证集上的指标再好看那么一点点。然而&am…...
别再只调包了!手把手教你用Python+SVM从零搭建一个中文情感分析系统(附完整代码)
从零构建中文情感分析系统:SVM实战与避坑指南第一次尝试用机器学习处理中文文本时,我被"的得地"分词的混乱结果震惊了——这堆毫无意义的字符组合,真的能训练出识别情感的模型吗?三年前那个深夜,当我看着自己…...
基于强化学习与LLM的在线讨论不当言论自动改写技术
1. 项目概述与核心挑战 在社交媒体和在线论坛上,我们每天都能看到海量的讨论。其中,不乏一些言辞激烈、充满攻击性或者逻辑混乱的“不当言论”。传统的平台治理手段,比如关键词过滤、基于分类器的自动检测加上人工审核,更像是一个…...
机器学习赋能软件工程:从缺陷预测到代码生成的实践指南
1. 项目概述与核心价值作为一名在软件工程领域摸爬滚打了十几年的老兵,我亲眼见证了从瀑布模型到敏捷开发,再到如今DevOps和AI驱动的开发范式的变迁。最近几年,一个最深刻的感受是:我们写的代码和构建的系统越来越复杂,…...
BooruDatasetTagManager:AI训练数据标注的终极解决方案,10倍提升图像标注效率
BooruDatasetTagManager:AI训练数据标注的终极解决方案,10倍提升图像标注效率 【免费下载链接】BooruDatasetTagManager 项目地址: https://gitcode.com/gh_mirrors/bo/BooruDatasetTagManager 在AI模型训练中,数据标注是决定模型质量…...
机器学习揭示h-BN莫尔超晶格中滑动铁电的拓扑极化图案与调控
1. 项目概述:当机器学习遇见莫尔物理最近几年,但凡关注凝聚态物理前沿的人,都绕不开“莫尔超晶格”这个词。简单来说,就是把两层原子晶体(比如石墨烯、过渡金属硫化物)稍微扭一个角度,或者让它们…...
软体机器人跳跃:离散弹性杆仿真与动态分岔原理详解
1. 软体机器人跳跃:从生物灵感走向工程现实如果你观察过一只蚂蚱的起跳,或者一只青蛙的弹射,那种瞬间爆发、姿态优雅的运动,背后是自然界亿万年来优化的高效能量转换机制。传统的刚性机器人,靠着电机、齿轮和连杆&…...
自动去偏机器学习:正交损失与Riesz表示定理驱动的高效统计推断
1. 项目概述与核心价值在统计机器学习和因果推断的实际研究中,我们经常面临一个经典困境:为了捕捉数据中复杂的非线性关系,我们不得不使用像梯度提升树、深度神经网络这类灵活且强大的机器学习模型来拟合干扰参数(例如倾向得分、条…...
【MATLAB】工业控制参数多目标优化(GA/PSO)
【MATLAB】工业控制参数多目标优化(GA/PSO) 一、引言 工业控制系统的控制参数直接决定系统动态响应、稳态精度、抗干扰能力与运行稳定性,PID控制器、伺服调节器、过程闭环控制器等核心单元的参数整定是工业自动化领域的关键技术环节。传统人工试凑法、Z-N临界比例度法等参…...
