KKMonitor

屏幕加载时间

KMonitor 自动采集 Activity、Fragment 和 ViewController 绘制第一帧所需的时间,因此无需手动埋点即可找到缓慢的屏幕。

KMonitor 会自动采集 Android Activity、Fragment 以及 iOS ViewController 的加载耗时。加载缓慢意味着用户等待太久才看到内容,这些 Trace 可以帮助您定位需要优化的屏幕,无需手动埋点。

Android

Activity 加载时间测量 Activity 创建到屏幕绘制第一帧之间的时间,也称为第一帧时间或初始显示时间 (TTID)。

每次 Activity 加载都会记录为一个 Span,名称由 Activity TTID 加上 Activity 完全限定类名组成。例如 MainActivity 的 Span 名称为 Activity TTID com.example.MainActivity

当 Activity 作为冷启动的一部分加载时,会添加 app_startup_first_activity 属性,值为 true

Fragment 加载时间测量 Fragment view 创建到屏幕绘制第一帧之间的时间,也称为第一帧时间 (TTF) 或初始显示时间 (TTID)。

每次 Fragment 加载都会记录为一个 Span,名称由 Fragment TTID 加上 Fragment 完全限定类名组成。例如 HomeFragment 的 Span 名称为 Fragment TTID com.example.HomeFragment

完全限定名称可能会被截断,以符合 Span 名称 64 个字符的限制。

捕获的数据

每次 Activity 加载都会创建 Activity TTID {fully qualified activity name} Span;每次 Fragment 加载都会创建 Fragment TTID {fully qualified fragment name} Span。

Activity TTID Span 可以携带以下属性:

属性描述
app_startup_first_activity此 Activity 是否是应用启动时的第一个 Activity。

这些 Span 具有以下 checkpoint:

检查站描述
fragment_lifecycle_attachedFragment 附加的时间。
fragment_lifecycle_startedFragment 启动的时间。
fragment_lifecycle_resumedFragment 恢复的时间。
activity_lifecycle_createdActivity 创建的时间。
activity_lifecycle_startedActivity 启动的时间。
activity_lifecycle_resumedActivity 恢复的时间。

iOS

ViewController 加载时间测量 ViewController 的 view 被加载到屏幕绘制第一帧之间的时间,也称为第一帧时间或初始显示时间 (TTID)。

每次 ViewController 加载都会记录为一个 Span,名称由 VC TTID 加上 ViewController 完全限定类名组成。例如 MainViewController 的 Span 名称为 VC TTID MainViewController

当 ViewController 作为冷启动的一部分加载时,会添加 app_startup_first_view_controller 属性,值为 true

完全限定名称可能会被截断,以符合 Span 名称 64 个字符的限制。

捕获的数据

每次 ViewController 加载都会创建 VC TTID {view controller name} Span。

ViewController TTID Span 可以携带以下属性:

属性描述
app_startup_first_view_controller此 ViewController 是否是应用启动时的第一个 ViewController。

这些 Span 具有以下 checkpoint:

检查站描述
vc_load_view加载视图的时间。
vc_view_did_load视图加载到内存中的时间。
vc_view_will_appear视图即将出现的时间。
vc_view_did_appear视图完全可见的时间。