Android 检测应用中的UI卡顿的工具

1、利用Looper中的Printer来实现监控

2、Choreographer

3、也是利用Looper机制

https://github.com/markzhai/AndroidPerformanceMonitor [方式1]
https://github.com/wasabeef/Takt [方式2]
https://github.com/friendlyrobotnyc/TinyDancer [方式2]
https://github.com/android-notes/Cockroach[方式3]



双缓冲:Linux上通常使用Framebuffer来做显示,更新Framebuffer数据后,驱动会把Framebuffer数据显示到屏幕上。如果上一帧数据没显示完,下一帧数量来了,更新显示的时候会残影闪烁。所以需要双缓冲技术。双缓冲存在两个缓冲区,交换显示到屏幕界面。

VSYNC:双缓冲中,一个帧数据准备好以后,cpu主动查询的方式检测是否数据准备好了。效率较低,引入了VSYNC(Vertical Synchronization(垂直同步))定时中断,一旦收到VSYNC中断,cpu开始更新数据。

Chorographer:收到定时中断,调用用户的回调方法,

CALLBACK_INPUT 级别高,与输入无关

CALLBACK_ANIMATION 级别二 ,与动画有关

CALLBACK_TRAVERSAL级别最低,与UI有关


FPS(Frames Per Second)每秒传递的帧数。
只要60FPS,人眼就识别不出来,就感觉不到卡。
系统每隔16ms发出VSYNC信号,触发UI渲染,所以每一帧要在16ms以内完成。
如果界面过于复杂,这一操作需要24ms,系统得到VSYNC信号时,就无法进行正常的渲染,32ms看到的是同一帧,就发生了丢帧现象。


ui过于复杂,绘制一帧内容耗时太长。
UI线程太忙,得到VSYNC信号,也无法进行渲染。


layout层次工具Hierarchy view ,大神开发3d效果布局层次工具(https://github.com/JakeWharton/scalpel)android自带的GPU Profile 和 静态代码检测Lint。优化工具TraceView Systrace。

你可能感兴趣的:(Android 检测应用中的UI卡顿的工具)