Android 帧率分析

卡顿:

界面呈现是指从应用生成帧并将其显示在屏幕上的动作。如需确保用户能够流畅地与您的应用互动,您的应用呈现每帧的时间不应超过 16ms,以达到每秒 60 帧的呈现速度(为什么是 60fps?)。如果您的应用存在界面呈现缓慢的问题,系统会不得不跳过一些帧,这会导致用户感觉您的应用不流畅。我们将这种情况称为卡顿

Systrace:

Systrace 是 Android4.1 中新增的性能数据采样和分析工具。它可帮助开发者收集 Android 关键子系统(如 SurfaceFlinger/SystemServer/Kernel/Input/Display 等 Framework 部分关键模块、服务,View系统等)的运行信息,从而帮助开发者更直观的分析系统瓶颈,改进性能。

AndroidStudio CPU Profiler

Systrace 的功能包括跟踪系统的 I/O 操作、内核工作队列、CPU 负载以及 Android 各个子系统的运行状况等。

接下来,抓取下游戏的卡帧的情况,编译一个渠道包的debug版本,运行设备是android 12 oppo k7上抓取system trace:

打开调试模式,链接上设备,先在cup profiler中选择system trace recording 开始抓取系统trace
在这里插入图片描述
等待一段时间后,点击stop 按钮,停止抓取。

注意点,每个版本的卡顿帧率在studio上展示不同,详情阅读界面卡顿检测

打开Systrace,如下所示:
在这里插入图片描述
Display 下方看到 Janky frames 轨道。默认情况下,性能分析器只会将卡顿帧显示为有待调查的候选对象。在每个卡顿帧中,红色部分突出显示了相应帧超出其渲染截止时间的时长。时长超过 16 毫秒的事件会以红色表示。

选中Janky frames 中红色方块,按下M键+双击鼠标,如下所示:

在这里插入图片描述
红色框框,空白处是有关线程的执行情况,比如app主线程和renderThread和GPU complection。

总结:CPU Profiler 在这些场景中要如何使用呢?基本的思路是:首先就要抓 System Trace,先用System Trace 分析、定位问题,如果不能定位到问题,再借助 Java Method Trace 或 C/C++ Function Trace 进一步分析定位

perfetto 更强大的记录

类似systemtrace ,用在更复杂的耗时分析。

使用文档: https://perfetto.dev/docs/quickstart/android-tracing#perfetto-cmdline

资料参考

  • 浏览 Systrace 报告:https://developer.android.com/topic/performance/tracing/navigate-report?hl=zh-cn#analysis
  • 界面卡顿profiler cpu分析:https://developer.android.com/studio/profile/jank-detection?hl=zh-cn
  • 渲染速度缓慢:https://developer.android.com/topic/performance/vitals/render?hl=zh-cn
  • Android卡顿掉帧问题分析之实战篇:https://www.jianshu.com/p/f1a777551b70
  • Android流畅度评估及卡顿优化:https://ontheway.cool/skills/android/android-fluency-quality-manage.html#_3-%E4%B8%BB%E8%A6%81%E5%8D%A1%E9%A1%BF%E5%8E%9F%E5%9B%A0
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值