启动耗时事件是用于度量应用启动过程在系统可感知阶段耗时的事件,主要是针对用户可感知的应用启动过程进行性能度量,包括桌面启动、状态栏启动、最近任务列表启动等场景。开发者订阅此事件可以获取到启动过程中关键阶段耗时。
启动耗时事件统计时间起点为用户点击屏幕,默认结束点为启动动效完成,使用者可调用reportDrawCompleted接口根据实际情况传入定制结束时间。

icon_input_time:用户点击屏幕时间点。
animation_finish_time:系统定义的启动耗时,开发者无法干预,该时间为手指离开屏幕到启动动效结束的时间。
extend_time:开发者定制的启动耗时,该时间为手指离开屏幕到开发者调用reportDrawnCompleted接口的时间。开发者可以根据业务需要在合适的时机调用reportDrawnCompleted接口,不调用或手指离开屏幕后5s未调用则该指标大小为0。
计算方法:
当列表滑动过程中应用主线程或者RenderService绘制流程中出现卡顿时上报此事件。
其中滑动过程从手势识别为滑动开始到页面滑动停止结束。从应用主线程和RenderService绘制分别计算卡顿时长。
上报阈值:
最大单帧耗时超过50ms则为滑动丢帧,具体规则为max_render_frametime或max_app_frametime超过50ms时会触发该事件上报。

日志老化规格
一般情况,栈文件的大小为7-10KB。应用沙箱内的watchdog目录最大保存10M内容,超出后,需要用户手动清理文件。目录地址:/data/storage/el2/log/watchdog/。
若用户未主动清理,系统会触发清理。
事件里如何获取日志
从external_logs中获取日志路径。
采样栈的格式
抓栈功能目前只支持ARM64架构,抓栈结果为解析后的混合栈信息,包含native帧和JS帧。此日志为避免过度消耗系统资源,一个进程一天至多采集一次。
抓栈结果部分示例如下:

此采样栈包含在滑动出现超过50ms卡顿时应用主线程调用信息,由于一般滑动卡顿过程较短,因此在出现问题时采集了一次调用栈。可根据同一场景卡顿上报的采样栈数据进行聚类,以判断该场景下滑动卡顿的具体根因。采样栈具体解析方法详见主线程超时调用栈日志规格。