BlockCanary
#Android/BlockCanary
一、基本使用
|
|
|
|
二、BlockCanary原理
计算主线程中消息分发耗时,超出阈值则提醒卡顿
|
|
检测UI卡顿,Android更新UI都是在主线程操作,那么所有的更新都会到loop()方法中来。那么计算dispatchMessage耗时就可以了。
|
|
|
|
通过两个时间差来判断,简单粗暴。通过Looper中public void setMessageLogging(Printer printer)
来设置自己自定义的Printer,重写void println(String x);
方法即可实现方法耗时统计了。
BlockCanary 中的具体实现是LooperMonitor
,具体实现:
|
|
计算时间差来判断是否卡顿了,默认卡顿阈值3S.
明白了原理,再来看看实现。
通过start()开启。那么start()中做了什么?
|
|
很简单,打开监控。这个mBlockCanaryCore.monitor
就是自己自定义实现的Printer.
三、整体流程
BlockCanary: 传送门
github原图如下: