HarmonyOS鸿蒙Next中订阅了hiAppEvent启动耗时事件(ArkTS)但是数据获取不到?
HarmonyOS鸿蒙Next中订阅了hiAppEvent启动耗时事件(ArkTS)但是数据获取不到?
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)}`);
}
}
}
});
使用示例代码 但是启动耗时的数据获取不到
更多关于HarmonyOS鸿蒙Next中订阅了hiAppEvent启动耗时事件(ArkTS)但是数据获取不到?的实战教程也可以访问 https://www.itying.com/category-93-b0.html
更多关于HarmonyOS鸿蒙Next中订阅了hiAppEvent启动耗时事件(ArkTS)但是数据获取不到?的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html
试了下,也没触发。更具官网说明,系统在监控应用启动时依赖特定关键事件的记录,可能被依赖的事件没触发吧
系统在监控应用启动时依赖特定关键事件的记录,若这些事件在5秒内全部上报,系统将立即生成APP_LAUNCH事件,并通过回调函数将事件内容传递给应用;
若关键事件存在缺失,系统将在5秒后根据实际接收到的关键事件生成APP_LAUNCH事件。在生成APP_LAUNCH事件的过程中,若应用出现退出或崩溃,onReceive回调接口可能不会被触发,从而导致事件上报失败。当应用重新启动时,将上报前次未发送的启动耗时事件。
应用退出,重新启动,再查看日志看下有没有数据呢?
没有 其他的事件有这个事件的数据摸不到头脑,
订阅hiAppEvent启动耗时事件获取不到数据,可能是以下原因导致:
-
应用未正确配置事件订阅权限,需在module.json5文件中声明
ohos.permission.APP_ACCELERATION_STARTUP权限。 -
事件订阅代码未在应用启动早期阶段执行,建议在Ability的onCreate生命周期初期调用hiAppEvent订阅方法。
-
设备系统版本未达到要求,鸿蒙Next对hiAppEvent的支持需要特定基线版本。
-
订阅的事件参数或事件名称与系统实际发出的事件不匹配,需核对事件名是否为
startup相关定义。
检查以下几个方面:
-
权限配置:确保在module.json5中声明了
ohos.permission.APP_ABILITY_BACKGROUND_RUNNING权限,并在应用首次启动时动态申请。 -
观察者注册时机:在应用启动的早期阶段(如Ability的onCreate)注册观察者,避免错过启动事件。
-
事件触发条件:APP_LAUNCH事件通常在冷启动或温启动时触发,热启动可能不会产生事件。尝试完全退出应用后重新启动。
-
日志级别:检查hilog的日志级别是否设置为INFO或更低,确保日志可输出。使用
hilog.isLoggable(0x0000, hilog.LogLevel.INFO)验证。 -
系统版本兼容性:确认设备为HarmonyOS Next版本,且API版本支持hiAppEvent接口。
-
回调函数执行:在onReceive回调中添加断点或日志,确认是否被调用。若未被调用,可能是事件未触发或观察者注册失败。
若以上均无误,可尝试订阅其他系统事件(如APP_TERMINATE)测试观察者功能是否正常。

