int HiSysEventManager::AddEventListener(std::shared_ptr<HiSysEventSubscribeCallBackBase> listener, std::vector<ListenerRule>& rules)
|
接口功能:注册订阅HiSysEvent系统事件侦听对象,可设置规则订阅某些事件。
输入参数:
@@ -43,31 +43,26 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接
**表 2** ListenerRule订阅规则对象
-
-属性名称
- |
-描述
- |
-
-
-uint32_t ruleType
- |
-规则类型(匹配范围包括domain以及eventName):
-- 1:全字符匹配。
- 2:前缀匹配。
- 3:正则表达式匹配。
- 其他值:无效的匹配方式。
- |
-
-std::string domain
- |
-- domain:事件所属领域,如果传入的是空字符串,则默认事件领域字段匹配成功。
- |
-
-std::string eventName
- |
-- eventName:事件的名称,如果传入的是空字符串,则默认事件名称字段匹配成功。
- |
-
-
-
+ | 接口名称 | 返回值 | 描述 |
+ | --------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------- | -------------------------------------------- |
+ | ListenerRule(const std::string& tag, RuleType ruleType = RuleType::WHOLE_WORD) | 事件标签订阅规则对象 | 创建事件标签订阅规则对象 |
+ | ListenerRule(const std::string& domain, const std::string& eventName, RuleType ruleType = RuleType::WHOLE_WORD) | 事件领域与事件名称订阅规则对象 | 创建事件领域与事件名称订阅规则对象 |
+ | ListenerRule(const std::string& domain, const std::string& eventName, const std::string& tag, RuleType ruleType = RuleType::WHOLE_WORD) | 事件领域、事件名称,事件标签订阅规则对象 | 创建事件领域、事件名称,事件标签订阅规则对象 |
+
+- 参数tag:开发者自定义订阅规则的HisysEvent事件标签。事件标签字符串最大长度16个字符(含),有效字符包含大小写字母及数字。
+
+- 参数domain:开发者自定义订阅规则的HisysEvent事件领域。事件领域字符串最大长度16个字符(含),有效字符包含大写字母、数字及下划线。
+
+- 参数eventName:开发者自定义订阅规则的HisysEvent事件名称。事件名称字符串最大长度32个字符(含),有效字符包含大写字母、数字及下划线。
+
+- 参数ruleType:开发者自定义订阅规则的规则类型。取值为枚举RuleType,具体值如下表。
+
+ | 类型 | 描述 |
+ | ---------- | ------------- |
+ | INVALID | 无效匹配类型 |
+ | WHOLE_WORD | 全词匹配类型 |
+ | PREFIX | 前缀匹配类型 |
+ | REGULAR | 正则匹配类型 |
**表 3** HiSysEventSubscribeCallBackBase订阅对象
@@ -107,11 +102,11 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接
- 注册回调对象:
- HiSysEventManager::AddEventListener\(std::shared\_ptr listener, std::vector& rules\)。
+ HiSysEventManager::AddEventListener\(std::shared\_ptr listener, std::vector& rules\)。
```
- // 以下是订阅domain=HIVIEWDFX的所有系统事件的应用例子
+ // 以下是订阅系统事件的示例
#include "hisysevent_manager.h"
#include
namespace OHOS {
@@ -133,11 +128,13 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接
// 调用订阅接口注册开发实现的订阅对象
auto toolListener = std::make_shared();
- struct ListenerRule rule;
- rule.ruleType = 1; // 1: default type
- rule.domain = "HIVIEWDFX";
- std::vector sysRules;
- sysRules.push_back(rule);
+ ListenerRule tagRule("dfx"); // 事件标签规则订阅,规则类型默认的全词匹配类型
+ ListenerRule regRule("dfx.*", RuleType::REGULAR); // 事件标签规则订阅,规则类型为正则匹配类型
+ ListenerRule domainNameRule("HIVIEWDFX", "APP_USAGE", RuleType::PREFIX); // 事件领域及事件名称规则订阅,规则类型前缀匹配类型
+ std::vector sysRules;
+ sysRules.push_back(tagRule);
+ sysRules.push_back(regRule);
+ sysRules.push_back(domainNameRule);
HiSysEventManager::AddEventListener(toolListener, sysRules);
```
diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md
index 37a5aaea1127b102290eb2afb2c6ce5fa887a0a9..a98d9ee34db923f52349f2a274d16f9df7c6a9af 100644
--- a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md
+++ b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-tool.md
@@ -14,19 +14,42 @@
工具预置在/system/bin目录下,命令可以在任意目录执行。
```
- hisysevent [-r | -l [-s |