美文网首页
BlockCanary监控卡顿

BlockCanary监控卡顿

作者: gczxbb | 来源:发表于2019-03-20 16:30 被阅读0次

    总结

    1,非侵入式,不需要打点,输出的信息可以精准定位问题到行,主要是监控主线程卡顿,在looper的looper方法,给主线程looper设置一个printer,打点统计handler的dispatchMessage方法执行的时间,看是否超过阀值,dump信息。
    2,在dispatchMessage方法前后,有Printer日志输出,两侧调用时成对的。第一次调用记录时间设置调用标志,startDump,第二次stopDump,记录时间,恢复标志。
    3,第一次调用时,dump堆栈和cpu信息,分别两个类stackSamper和cpuSamper采样。线程执行。公用父类,采样算法不同。
    4,第二次调用时,记录时间,并判断与起始时间差是否超过阀值,卡顿时通过BlockListener的onBlockEvent回调监听,在工作线程,将采样数据封装一个BlockInfo,写入LogWriter,就是写入到一个文件中,如果开启走通知栏,那么将发出一条通知栏消息。
    消息栏由BlockInterceptor完成,实现类DisplayService,在内部搞一个PendingIntent,通知栏。
    主要技术点,在dispatchMessage方法的前后,logger方法日志中加入时间和开始以及停止的方法。根据dispatchMessage的时间间隔来判断是否卡顿。


    任重而道远

    相关文章

      网友评论

          本文标题:BlockCanary监控卡顿

          本文链接:https://www.haomeiwen.com/subject/uxbzmqtx.html