1.工具介绍

当前监控工具可以用于量产监控UI和应用卡顿,但是该工具还没有和数据埋点结合,量产环境下监控暂时没有意义。因此建议各位FO在开发阶段集成该工具,在开发阶段就知道自己应用是否出现卡顿和丢帧,提早发现问题,处理问题。

该工具包括两个部分:

  • UiBlockMonitor :主要监控界面是否有丢帧
  • AppBlockMonitor :主要监控应用主线程处理事件是否超时,超时会打印堆栈。

2.UiBlockMonitor 使用介绍

该工具主要基于Choreographer的帧回调接口实现的。当收到垂直同步信号,开始绘制的时候就会回调doFrame()接口,在回调中监控到两次回调间隔时间大于16.7ms就说明有丢帧,就会输出一次日志通知开发检查自己界面各个view的绘制时间。

丢帧日志.png

说明:如果偶尔发现有该日志输出,可以暂时不优化。如果在界面切换的时候或者一直在输出该丢帧log,就需要查看自己代码是否在三大绘制流程中有做过多耗时操作。

2.1 使用方法
1
2
3
4
5
// 开始监控丢帧
UiBlockMonitor.getInstance().start();

// 结束监控丢帧
UiBlockMonitor.getInstance().stop();

3.AppBlockMonitor

该工具主要基于Handler消息处理机制,监控消息处理大于阈值的事件。默认是3000ms,可以设置该时间,建议不要操作3000ms, 如果设置成5000ms,可能就无法帮助你监控ANR事件或者应用卡顿了。

如果出现卡顿之后,会报出堆栈日志,此时就需要FO检查代码问题了。

应用卡顿.png

3.1 使用方法
1
2
3
AppBlockMonitor appMonitor = AppBlockMonitor.getInstance();
appMonitor.setBlockThresholdMillis(3000); // 可以不填,默认3000ms
appMonitor.install();