启动监控需要使用 qapm-plugin 插件在编译期间进行插桩操作,默认插桩点为 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内额外打点,示例如下:
参见代码:
QAPM.endScene(StageConstant.QAPM_APPLAUNCH, QAPM.ModeResource);
校验功能是否正常
每次启动后20s或者切换到后台,如打印以下日志,则代表启动指标数据上报成功。
检索 TAG: [plugin::114]
注意:
需要使用 qapm-plugin 插件进行插桩才可用,并且需要手动增加一个 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。
启动耗时:
总启动耗时/总启动次数
本页内容是否解决了您的问题?