启动

最近更新时间:2025-10-10 16:50:01

我的收藏
本文介绍了启动监控模块的各个指标详情以及如何在控制台查看各个指标。

Android

Android 启动监控的阶段耗时说明如下图所示:

默认冷启动
从进程创建到首个 Activity 首帧渲染完成时间。计算方式如下:
默认冷启动耗时 = 首个 Activity 的首帧渲染完成时间 - 进程创建时间
冷启动
从进程创建到落地页的首帧渲染完成耗时,或者从进程创建到业务自定义启动结束点耗时。计算方式如下:
冷启动耗时 = 落地页的首帧渲染时间或业务自定义启动结束点 - 进程创建时间
以下是冷启动的几种情况:
"first_launch": 属于[冷启动]中的一种特殊情况,即应用安装后的首次[冷启动],通过标签 "tag_first_launch" 来区分。
"pre_launch": 属于[冷启动]中的一种特殊情况,进程被非 launch Activity 的事件所拉起,这个阶段称为预启动,预启动后,直接进入温启动阶段,通过标签 "tag_pre_launch" 来区分。
"cold_launch":表示冷启动,从应用进程创建,到启动页完成首次渲染。除了前面两种特殊的冷启动外,其他普通的冷启动,通过标签 "tag_normal_launch" 来区分。
温启动
不存在 Active 的 Activity 的情况下,从 Activity 的打开到首次渲染完成耗时。计算方式如下:
温启动耗时 = 首个 Activity 的首帧渲染完成时间 - 首个 Activity 的 onCreate 时间
"warm_launch":表示温启动的配置项。

iOS

默认冷启动
从进程创建到首个 VC 的第一帧 UI 上屏耗时。计算方式如下:
默认冷启动 = 首个 VC 的第一帧 UI 上屏时间 - App 进程创建时间
冷启动
从进程创建到首个 VC 的第一帧 UI 上屏耗时,或者从进程创建到业务自定义启动结束点耗时。计算方式如下:
冷启动耗时 = 首个 VC 的第一帧 UI 上屏时间或业务自定义启动结束点 - App 进程创建时间
App 进程创建时间:从进程的 processInfo 获取进程的启动时间。
main 函数执行时间:业务调用相关接口主动打点。
第一帧 UI 上屏时间:通过首个 CA::Transaction::commit 执行时间获取近似值。
启动上报默认包含3个打点(Span) 信息。
_RM_Cold_Launch:从进程创建到启动结束,和冷启动指标范围一致。
_RM_Before_Main:从进程创建到全局变量初始化的时间。
_RM_After_Main:从 main 函数执行时间到启动结束的时间。
说明:
由于 iOS 15引入了预热(prewarming)的特性,系统会在用户启动应用程序之前预先加载一些资源,以提高应用程序的启动速度。然而,这也会导致平台获取的应用程序启动耗时数据异常,因为预热过程并不是用户主动启动应用程序所需的时间。因此,为了保证数据的准确性,平台会过滤掉这类数据。iOS prewarming 的介绍可以参考 About the App launch sequence
前后台切换
应用前后台切换耗时​指应用程序从用户操作(例如点击图标将应用切换到前台,或按下 Home 键将应用切换到后台)开始,到应用完成相应的界面渲染和数据处理,并达到可交互状态为止所经历的时间。计算方式如下:
前后台切换耗时 = applicationBecomeActive - applicationWillEnterForeground
applicationWillEnterForeground:接收到 UIApplicationWillEnterForegroundNotification 通知时间。
applicationBecomeActive:接收到 UIApplicationDidBecomeActiveNotification 通知时间前后台切换上报默认包含1个打点(Span) 信息。
_RM_App_Resume:同前后台切换,即为 applicationWillEnterForeground 到 applicationBecomeActive 的时间。

数据分析

以下内容以 iOS 启动耗时分析为例进行介绍,Android 可参考如下内容。

指标分析

平台支持平均值、P50、P90、P99等指标的查看及下钻分析,您可在 启动 > 指标分析 页面进行查看。


Span 耗时分析

用户可以通过 SDK 中的打点接口在启动阶段添加一些 Span 信息,用于监控及排查启动耗时的逻辑。


查询启动个例

启动个例面板支持通过特定的筛选条件搜索启动个例,以进行详细的耗时分析,您可在 启动 > 启动个例 页面进行查看。