在Harmony应用开发中,理解和监控用户行为以及应用性能至关重要。HiAppEvent与HiTraceMeter是HarmonyOS为开发者提供的强大工具,旨在帮助开发者捕获关键事件和追踪性能瓶颈。本文将详细介绍这两个工具的概念、使用场景和实现步骤,附带示例代码。
HiAppEvent:事件打点与订阅
基本概念
- 打点:记录用户操作,提供业务数据,便于分析。
- 事件设计规范:包括领域、名称、类型、参数,确保信息清晰准确。
- 事件类型:行为、故障、统计、安全四类。
- 接口说明:
write()
用于打点,addWatcher()
与removeWatcher()
用于订阅与取消订阅事件。
开发步骤
- 订阅事件:在应用启动时添加观察者。
- 打点记录:在用户交互点调用
write()
接口记录事件。
示例代码
// EntryAbility.ts
import hiAppEvent from '@ohos.hiviewdfx.hiAppEvent'
// 添加订阅
hiAppEvent.addWatcher({
name: "watcher1",
appEventFilters: [{ domain: "button" }],
triggerCondition: { row: 1 },
onTrigger: function (curRow, curSize, holder) {
// 处理事件
}
})
// Index.ets
import hiAppEvent from '@ohos.hiviewdfx.hiAppEvent'
// 打点记录
Button("writeTest").onClick(()=>{
hiAppEvent.write({
domain: "button",
name: "click",
eventType: hiAppEvent.EventType.BEHAVIOR,
params: { click_time: 100 }
}).then(() => {
// 成功回调
}).catch((err) => {
// 错误处理
})
})
HiTraceMeter:性能打点跟踪
基本概念
- hiTraceMeter Tag:用于分类跟踪数据,每个子系统对应一个Tag。
实现原理
- 应用通过
hiTraceMeter
接口进行打点,数据存储于内核ftrace缓冲区,通过命令行工具读取并保存。
接口说明
startTrace()
:标记任务开始。finishTrace()
:标记任务结束。traceByValue()
:标记数值变量。
开发步骤
- 开始跟踪:在业务逻辑关键点调用
startTrace()
。 - 结束跟踪:完成业务后调用
finishTrace()
。 - 数值跟踪:调用
traceByValue()
记录数值变化。
示例代码
// ArkTS应用
import hitrace from '@ohos.hiTraceMeter';
hitrace.startTrace("HITRACE_TAG_APP", 1001);
console.log(`HITRACE_TAG_APP running`);
hitrace.finishTrace("HITRACE_TAG_APP", 1001);
// JS应用
import hiTraceMeter from '@ohos.hiTraceMeter'
hiTraceMeter.startTrace("business", 1);
console.log(`business running`);
hiTraceMeter.finishTrace("business", 1);
运行与数据分析
- 使用
hdc shell
与hitrace
命令行工具抓取和分析跟踪数据。
hdc shell
hitrace --trace_begin app
hitrace --trace_dump | grep tracing_mark_write
hitrace --trace_finish
抓取trace成功的数据如下所示
<...>-3310 (-------) [005] .... 351382.921936: tracing_mark_write: S|3310|H:HITRACE_TAG_APP 1001
<...>-3310 (-------) [005] .... 351382.922138: tracing_mark_write: S|3310|H:HITRACE_TAG_APP 1002
<...>-3310 (-------) [005] .... 351382.922165: tracing_mark_write: F|3310|H:HITRACE_TAG_APP 1001
<...>-3310 (-------) [005] .... 351382.922175: tracing_mark_write: F|3310|H:HITRACE_TAG_APP 1002
<...>-3310 (-------) [005] .... 351382.922182: tracing_mark_write: S|3310|H:HITRACE_TAG_APP 1003
<...>-3310 (-------) [005] .... 351382.922203: tracing_mark_write: F|3310|H:HITRACE_TAG_APP 1003
<...>-3310 (-------) [005] .... 351382.922210: tracing_mark_write: S|3310|H:HITRACE_TAG_APP 1004
<...>-3310 (-------) [005] .... 351382.922233: tracing_mark_write: C|3310|H:myTestCount 3
<...>-3310 (-------) [005] .... 351382.922240: tracing_mark_write: F|3310|H:HITRACE_TAG_APP 1004
<...>-3310 (-------) [005] .... 351382.922247: tracing_mark_write: S|3310|H:HITRACE_TAG_APP 1004
<...>-3310 (-------) [005] .... 351382.922266: tracing_mark_write: F|3310|H:HITRACE_TAG_APP 1004
以上示例展示了如何使用HiAppEvent和HiTraceMeter增强应用监控和性能分析能力。通过合理运用这些工具,开发者可以更深入地理解应用行为,及时发现并解决潜在问题,提升用户体验。