有奖捉虫:行业应用 & 管理与支持文档专题 HOT
启动监控需要使用 qapmplugin 插件在编译期间进行插桩操作,默认插桩点为 Application 与 Activity 的各个生命周期。在 App SDK 统计默认的启动耗时为 Application 的 attachBaseContext 到第一个 Activity 的 onResume 结束。

前提条件

在 App 级别的 build.gradle 中配置了 qapm-plugin 插件。

配置步骤

1. 需要手动添加一个 Application 的子类,例如 BaseApplication(名称不作要求,子类可以不用实现任何方法,可以不用添加任何属性)。
2. 在 AndroidManifest.xml 文件的 application 的节点添加 android:name 属性,属性的 value为“包名+Application 子类的类名”。




额外打点

如果想统计启动区间内的某些方法的耗时,则需要额外的打点,示例如下:



参见代码:
QAPM.beginScene(StageConstant.QAPM_APPLAUNCH, "xxx方法名", QAPM.ModeResource);
/**业务逻辑*/
QAPM.endScene(StageConstant.QAPM_APPLAUNCH, "xxx方法名", QAPM.ModeResource);
如果想自定义启动的结束点,则需要在第一个 Activity 调用 onResume 的20s内额外打点,示例如下:



参见代码:
/**
* 需要自定义结束点的用户需要在onResume之后的20s内,否则以APM的结束点为准
*/
QAPM.endScene(StageConstant.QAPM_APPLAUNCH, QAPM.ModeResource);

校验功能是否正常

每次启动后20s或者切换到后台,如打印以下日志,则代表启动指标数据上报成功。
检索 TAG: [plugin::114]



注意:
需要使用 qapmplugin 插件进行插桩才可用,并且需要手动增加一个 Application 的子类。否则无效。
启动总耗时大于2.5s才会上报个例数据。
启动的问题数据可以在 终端性能监控 > 启动 > 问题列表 查看。

计算方式

冷启动:

应用自设备启动后或系统终止应用后的首次启动。
Android 计算方式:mainActivityOnResume_end - attachBaseContext_start。
iOS 计算方式:第一个页面首帧 UI 上屏时间 - 应用进程创建时间。

首次启动:

应用安装后第一次启动,是特殊的冷启动。
Android 计算方式:mainActivityOnResume_end - attachBaseContext_start
iOS 计算方式:第一个页面首帧 UI 上屏时间 - 应用进程创建时间。

热启动:

在进程及Activity实例还存在(iOS 是在应用在后台且存活)的前提下,应用切后台三分钟后,再次切回前台,定义为热启动。
Android 计算方式:activityOnResume_end - activityOnRestart_start。
iOS 计算方式:ApplicationDidBecomeActive - ApplicationWillEnterForeground。

启动耗时:

总启动耗时/总启动次数