BlockCanary是什么
BlockCanary是一个Android平台的一个非侵入式的性能监控组件,应用只需要实现一个抽象类,提供一些该组件需要的上下文环境,就可以在平时使用应用的时候检测主线程上的各种卡慢问题,并通过组件提供的各种信息分析出原因并进行修复。
取名为BlockCanary则是为了向LeakCanary致敬,顺便本库的UI部分是从LeakCanary改来的。
BlockCanary设计原理
上图是BlockCanary的工作流程图,整个流程分为三个部分,分别是监控卡顿、捕获现场、保存现场记录到本地。三个部分分别执行在不同的线程、这也是上述图中三个区域颜色不同的原因,下面详细解释下起工作流程。
第一部分-接收消息
BlockCanary对象构造时,会使用HandlerThread开启两个线程、分别对应图中绿色和紫色两块区域,start方法开启后,会将自定义的Printer设置给主线程的Looper,这样自定义的Printer就能获取每一个message处理时打印的日志,如果不了解Handler机制,