From c8174fa64f00c49fa4b5625ee60f38f2d918dadb Mon Sep 17 00:00:00 2001 From: xuyong Date: Fri, 28 Jan 2022 14:16:41 +0800 Subject: [PATCH] =?UTF-8?q?HiSysEvent=20Tag=E8=AE=A2=E9=98=85=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: xuyong --- .../subsystems/subsys-dfx-hisysevent-read.md | 72 +++++++++++-------- 1 file changed, 41 insertions(+), 31 deletions(-) diff --git a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md index 921b8e3a4f..fb77319e22 100644 --- a/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md +++ b/zh-cn/device-dev/subsystems/subsys-dfx-hisysevent-read.md @@ -118,59 +118,69 @@ HiSysEvent提供了跨进程订阅机制,开发者可以通过注册订阅接 本实例介绍如何订阅domain=HIVIEWDFX的所有系统事件。 -1. 源代码开发: +1. 编译设置: - - 引入对应的头文件: + - 在编译配置文件中添加对hisysevent\_native部件的libhisyseventmanager库的依赖。 - hisysevent\_manager.h。 + ``` + external_deps = [ "hisysevent_native:libhisyseventmanager", ] + ``` + + +2. 源代码开发: - - 实现回调接口: + - 自定义订阅回调实现类DemoListener, 引入hisysevent\_manager.h头文件,: - HiSysEventSubscribeCallBackBase::OnHandle\(const std::string& domain, const std::string& eventName, const int eventType, const std::string& eventDetail\)。 + ``` + #ifndef DEMO_LISTENER_H + #define DEMO_LISTENER_H + + #include "hisysevent_subscribe_callback_native.h" - - 注册回调对象: + #include - HiSysEventManager::AddEventListener\(std::shared\_ptr listener, std::vector& rules\)。 + class DemoListener : public OHOS::HiviewDFX::HiSysEventSubscribeCallBackNative { + public: + explicit DemoListener() : HiSysEventSubscribeCallBackNative() {} + void OnHandle(const std::string& domain, const std::string& eventName, const int eventType, + const std::string& eventDetail); + virtual ~DemoListener() {} + void OnServiceDied(); + }; + ``` + - 实现订阅回调接口: ``` - #include "hisysevent_manager.h" - #include - namespace OHOS { - namespace HiviewDFX { - // 实现订阅回调对象的接口 - void HiSysEventToolListener::OnHandle(const std::string& domain, const std::string& eventName, + #include "demo_listener.h" + + #include + + void DemoListener::OnHandle(const std::string& domain, const std::string& eventName, const int eventType, const std::string& eventDetail) { std::cout << eventDetail << std::endl; } - - void HiSysEventToolListener::OnServiceDied() + + void DemoListener::OnServiceDied() { std::cout << std::string("service disconnect, exit") << std::endl; exit(0); } - } // namespace HiviewDFX - } // namespace OHOS - - // 调用订阅接口注册开发实现的订阅对象 - auto toolListener = std::make_shared(); - ListenerRule tagRule("dfx"); // 事件标签规则订阅,规则类型默认的全词匹配类型 - ListenerRule regRule("dfx.*", RuleType::REGULAR); // 事件标签规则订阅,规则类型为正则匹配类型 + ``` + + - 通过HiSysEventManager类提供的AddEventListener接口注册回调对象: + + ``` + auto demoListener = std::make_shared(); + 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); - ``` - -2. 编译设置: - - 在BUILD.gn编译文件中,需要添加依赖hisysevent\_native部件的libhisyseventmanager库。 - - ``` - external_deps = [ "hisysevent_native:libhisyseventmanager", ] + HiSysEventManager::AddEventListener(demoListener, sysRules); ``` -- GitLab