性能优化 1:卡顿检测

1. 介绍卡顿之前,我们先了解几个名词

Jank:为了保证应用的平滑性,每一帧渲染时间不能超过16ms,达到60帧每秒;如果UI渲染慢的话,就会发生丢帧,这样用户就会感觉到不连贯性,我们称之为Jank

FPS:每秒的帧数。对于界面一直不停刷新的应用如视频,可以使用FPS来评价其流畅度

丢帧:应该在16ms完成的工作因各种原因没有做完,占了下n个16ms的时间,相当于丢了n帧

SM:和丢帧相对,在VSYNC机制中1s内有60个loop,因为某几次工作超过了16ms(丢帧),这样loop就无法运行60次(理论最大值);流畅度越低说明当前程序越卡顿;SM能够客观衡量Android程度卡的程度

2. 造成应用卡顿原因无非以下几种场景:

1. xml布局不合理(造成过度绘制)
2. 代码逻辑堵塞UI线程

针对第1点,是否过度绘制,我们可以通过 手机 -> 开发者选项 -> 调试GPU过度绘制,开启后,运行APP查看区域布局情况,布局绘制了越多层,红色就越深,越不合理

针对第2点,现在也有一些开源库可以辅助我们定位卡顿原因;像 AndroidPerformanceMonitor、BlockCanary、leakcanary等

3. 参考

  1. AndroidPerformanceMonitor

1. 移动APP性能评测-流畅度评测
2. Android性能优化-App卡顿
3. BlockCanary
4. UI卡顿检测的两种方法
5. BlockCanary — 轻松找出Android App界面卡顿元凶

你可能感兴趣的:(Android)