• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 应用冻屏事件介绍
2
3<!--Kit: Performance Analysis Kit-->
4<!--Subsystem: HiviewDFX-->
5<!--Owner: @rr_cn-->
6<!--Designer: @peterhuangyu-->
7<!--Tester: @gcw_KuLfPSbe-->
8<!--Adviser: @foryourself-->
9
10## 简介
11
12用户在使用应用时,如果出现点击无反应或应用无响应等情况,并且持续时间超过一定限制,就会被定义为应用冻屏,也被称为应用无响应或应用卡死。为了应对应用冻屏问题,系统会提供应用冻屏检测、维测日志抓取、日志上报的能力,为开发者提供详细的维测日志以辅助故障定位。
13
14## 检测原理
15
16详见[AppFreeze(应用冻屏)检测原理](appfreeze-guidelines.md#检测原理)。
17
18## 接口说明
19
20开发者可以通过HiAppEvent提供接口订阅应用冻屏事件“hiAppEvent.event.APP_FREEZE”,系统检测到应用冻屏后,会抓取维测信息通过HiAppEvent将冻屏事件回调给应用进程。
21
22- [订阅应用冻屏事件(ArkTS)](hiappevent-watcher-freeze-events-arkts.md)
23
24- [订阅应用冻屏事件(C/C++)](hiappevent-watcher-freeze-events-ndk.md)
25
26## 事件字段说明
27
28### params字段说明
29
30应用无响应事件信息中params属性的详细描述如下:
31
32| 名称 | 类型 | 说明 |
33| -------- | -------- | -------- |
34| time | number | 事件触发时间,单位为ms。 |
35| foreground | boolean | 应用是否处于前台状态。true表示应用处于前台;false表示应用处于后台。 |
36| bundle_version | string | 应用版本。 |
37| bundle_name | string | 应用名称。 |
38| process_name | string | 应用的进程名称。 |
39| pid | number | 应用的进程ID。 |
40| uid | number | 应用的用户ID。 |
41| uuid | string | 根据故障信息生成的故障特征码,用于标识特征相同的崩溃故障。 |
42| exception | object | 异常信息,详见exception属性。 |
43| hilog | string[] | 日志信息。 |
44| event_handler | string[] | 主线程未处理消息。 |
45| event_handler_size_3s | string | [THREAD_BLOCK_6S事件](appfreeze-guidelines.md#thread_block_6s-应用主线程卡死超时)(仅在应用无响应事件生效)中3s时任务栈中任务数量。 |
46| event_handler_size_6s | string | [THREAD_BLOCK_6S事件](appfreeze-guidelines.md#thread_block_6s-应用主线程卡死超时)(仅在应用无响应事件生效)中6s时任务栈中任务数量。 |
47| peer_binder | string[] | binder调用信息。 |
48| threads | object[] | 全量线程调用栈,详见thread属性。 |
49| memory | object | 内存信息,详见memory属性。 |
50| external_log<sup>12+</sup> | string[] | 故障日志文件路径。**为避免目录空间超限(限制参考log_over_limit),导致新生成的日志文件写入失败,日志文件处理完后请及时删除。** |
51| log_over_limit<sup>12+</sup> | boolean | 生成的故障日志文件与已存在的日志文件总大小是否超过5M上限。true表示超过上限,日志写入失败;false表示未超过上限。 |
52
53### exception字段说明
54
55| 名称 | 类型 | 说明 |
56| -------- | -------- | -------- |
57| name | string | 异常类型 |
58| message | string | 异常原因 |
59
60### thread字段说明
61
62| 名称 | 类型 | 说明 |
63| -------- | -------- | -------- |
64| thread_name | string | 线程名。 |
65| tid | number | 线程id。 |
66| frames | object[] | 线程调用栈,详见frame属性。 |
67
68### frame字段说明
69
70Native帧frame字段说明
71
72| 名称 | 类型 | 说明 |
73| -------- | -------- | -------- |
74| symbol | string | 函数名称。**名称长度超过256字节时将被删除,防止超长字符串引起未知问题。** |
75| file | string | 文件名。 |
76| buildId | string | 文件唯一标识。**文件可能没有buildId,请参考[日志规格](cppcrash-guidelines.md#一般故障场景日志规格)**。 |
77| pc | string | 程序执行的指令在文件内的偏移十六进制字节数。 |
78| offset | number | 程序执行的指令在函数内偏移字节数。 |
79
80Js帧frame字段说明
81
82| 名称 | 类型 | 说明 |
83| -------- | -------- | -------- |
84| file | string | 文件名 |
85| packageName | string | 模块的包名 |
86| symbol | string | 函数名称 |
87| line | number | 代码行号 |
88| column | number | 代码列号 |
89
90### memory字段说明
91
92| 名称 | 类型 | 说明 |
93| -------- | -------- | -------- |
94| rss | number | 进程实际占用内存大小,单位KB。 |
95| vss | number | 进程向系统申请的虚拟内存大小,单位KB。 |
96| pss | number | 进程实际使用的物理内存大小,单位KB。 |
97| sys_free_mem | number | 空闲内存大小,单位KB。 |
98| sys_avail_mem | number | 可用内存大小,单位KB。 |
99| sys_total_mem | number | 总内存大小,单位KB。 |
100
101## 应用冻屏规格自定义参数设置
102
103### 接口说明
104
105| 接口名 | 描述 |
106| -------- | -------- |
107| setEventParam(params: Record&lt;string, ParamType>, domain: string, name?: string): Promise&lt;void> | **应用冻屏事件自定义参数设置方法。**|
108
109### 参数设置说明
110
111开发者可以通过该接口订阅name为hiAppEvent.event.APP_FREEZE的应用冻屏事件,具体使用详见[setEventParam使用](../reference/apis-performance-analysis-kit/js-apis-hiviewdfx-hiappevent.md#hiappeventseteventparam12)。
112