监控Android卡顿的可视化工具:卡顿及FPS

Android GPU呈现模式原理及卡顿掉帧浅析- https://www.jianshu.com/p/2ad8723865cc
  -- 常见分析、定位卡顿的方案,系统工具:1. TraceView ; 2. Systrace; 3. 命令行adb shell dumpsys SurfaceFlinger --latency com...包名

  -- 第三方库方案:
  1. Matrix-TraceCanary: https://github.com/Tencent/matrix
微信的卡顿检测方案,采用的ASM插桩的方式,支持fps和堆栈获取的定位,但是需要自己根据asm插桩的方法id来自己分析堆栈,定位精确度高,性能消耗小,比较可惜的是目前没有界面展示,对代码有一定的侵入性。如果线上使用可以考虑。
  2. BlockCanaryEx: https://github.com/seiginonakama/BlockCanaryEx
主要原理是利用loop()中打印的日志,loop()中打印的日志可以看鸿洋的这篇博客Android UI性能优化 检测应用中的UI卡顿,支持方法采样,知道主线程中所有方法的执行时间和执行次数,因为需要获取cpu以及一些系统的状态,性能消耗大,不支持fps展示,尤其检测到卡顿的时候,会让界面卡顿很久。之前我们项目用的就是这个工具。
  3. fpsviewer: https://github.com/SilenceDut/fpsviewer/
利用Choreographer.FrameCallback来监控卡顿和Fps的计算,异步线程进行周期采样,当前的帧耗时超过自定义的阈值时,将帧进行分析保存,不影响正常流程的进行,待需要的时候进行展示,定位。
  fpsviewer—实时显示fps,监控Android卡顿的可视化工具,能实时显示fps,一段时间的平均帧率,以及帧率范围占比,并能获取卡顿堆栈的可视化工具。侵入性低,通过在异步线程采样获取堆栈,无代码侵入,性能消耗可忽略,对性能监控项的异常数据进行采集和分析,整理输出展示相应的堆栈,从而帮助开发者开发出更高质量的应用。

你可能感兴趣的:(性能优化与测试)