Android Matrix之TraceCanary Wiki

本文介绍了Android应用流畅性衡量标准,如帧率FPS和掉帧程度,深入探讨了Vsync和Choreographer的原理。通过TraceCanary,分析了主线程监控的实现方式,包括Looper和Choreographer,以及如何处理运行时数据存储和堆栈聚类问题,以优化卡顿。虽然集成方便,但数据采集和分析系统的搭建增加了开发者的工作负担。

一.怎么衡量流程性

1.帧率 FPS 

游戏60FPS ,电影 FPS 25FPS ~ 30FPS,人眼 12FPS

FPS 低并不意味着卡顿发生,而卡顿发生 FPS 一定不高。

2.掉帧程度可以更直观地衡量卡顿

16ms,如果一帧的准备时间超出这个值,则认为发生掉帧,假设每帧准备时间约 32ms,每次只掉一帧,那么 1 秒内实际只刷新 30 帧,即平均帧率只有 30FPS,但这时往往不会觉得是卡顿。反而如果出现某次严重掉帧(>300ms),那么这一次的变化,通常很容易感知到。所以界面的掉帧程度,往往可以更直观的反映出卡顿。

Best Normal Middle High Frozen
[0:3) [3:9) [9:24) [24:42) [42:∞)

 Activity 掉帧程度的分布情况及平均帧率 * 

相比单看平均帧率,掉帧程度的分布可以明显的看出,界面卡顿(平均帧率低)的原因是因为连续轻微的掉帧(下图1),还是某次严重掉帧造成的(下图2)。 

 再通过 Activity 区分不同场景,计算每个界面在有效绘制的时间片内,掉帧程度的分布情况及平均帧率,从而来评估出一个界面的整体流畅程度。 

二.原理

1.Vsync,Choreographer 编舞者

1.1 View 的绘制

View 的绘制会经过 Measure、Layout、Draw 这 3 个阶段,而这 3 个阶段的工作都是由 CPU 来负责完成。另外 CPU 还会负责一些用户输入、View 动画等事件,这部分工作都是在 UI 线程中完成。

当 CPU 绘制完成之后,会在 Rede

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值