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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值