1.流畅度概念的诞生

作者: 真胖大海 | 来源:发表于2018-03-29 10:25 被阅读41次

参考

一.FPS(Frame Per Second)

1s内提交到屏幕的帧数。FPS越高越流畅。
使用FPS衡量手机流畅度的
问题

  1. fps很低,但是app却并不卡顿。因为手机没有很大的绘制需求。比如:在1s内只有15帧的绘制需求,此时fps为15(很低),但是并不卡顿。
  2. App停止操作后,fps仍然在变化。因为屏幕每一帧针对的是手机上的所有进程,自己的app停止了,其他进程可能会引起屏幕界面变化。比如:app停止后,通知栏更新。

二.VSync垂直同步机制

正常情况:
CPU和GPU在16ms内将一帧的内容在back buffer中绘制完成,并和front buffer交换,当下一个VSync同步信号到来时,Display显示front buffer的内容。
图:2-1

image.png
(https://note.youdao.com/yws/public/resource/e1de6ab70a6075f4d9f88daf8c95d14b/xmlnote/BD62E109D38C4BF6AB97D02182A9A6F6/18898)
异常情况:
CPU和GPU绘制一帧的内容的事件超过了16ms,导致了掉帧。

图:2-2


image.png

注意
例子中使用的是双层buffer,实际使用的是三层buffer,可以在下一个Sync信号来临时,如果CPU空闲,CPU可以利用第三个buffer和GPU同时工作。

图:2-3


image.png

三.为什么感到卡顿

因为此帧的渲染时间不符合用户的渲染预期。
(比如:上一帧渲染使用了16ms,但是这一帧渲染使用了32ms,这一帧就不符合渲染预期)

使用垂直同步机制的作用

如果不使用垂直同步机制,因为每帧的内容不同,每帧的绘制时间不相同(单帧绘制波动),此帧的渲染时间不符合用户的渲染预期,所以用户感到卡顿。

如果使用垂直同步机制:
正常情况下(图2-1),每一帧的绘制时间为16ms,帧的渲染时间符合用户预期,用户就不感到卡顿。
丢帧的情况下(图2-2,绘制一帧相当使用了32ms)就会出现渲染时间不符合用户的渲染预期的情况,导致用户感到卡顿。

四.流畅度

4.1 定义:

1s内Loop运行的次数(理想状态是60)

4.2 使用流畅度衡量APP是否流畅的原理:

系统每隔16ms发送一次VSync信号,正常情况下,1s内发送60次VSync信号,Loop运行60次,每次Loop占用16ms(虽然16ms内Loop并不一定一直在工作)

如果因为一帧的绘制任务过多,导致一次Loop的运行时间超过了16ms,此时1s内Loop的运行次数少于60,同时由之前的垂直同步机制可知,此时会出现卡顿。
所以可以使用流畅度(1s内Loop运行的次数)来衡量APP是否流畅。

4.3 问题:怎样知道1s内Loop运行的次数 。

在下一帧到来的时候postFrameCallback指定的callBack会被调用

postFrameCallback(Choreographer.FrameCallback callback)
Posts a frame callback to run on the next frame.

相关文章

  • 1.流畅度概念的诞生

    参考 一.FPS(Frame Per Second) 1s内提交到屏幕的帧数。FPS越高越流畅。使用FPS衡量手...

  • Android图形系统(十二)-流畅度概念

    原创文章,转载注明出处。 一、Android流畅度概念 显示器刷新率(HZ):显示器物理刷新速率。显卡合成帧速率 ...

  • APP稳定性问题汇总与KOOM的预研

    1. APP稳定性问题汇总 2.1 卡顿/流畅度 概念与原理 View的绘制帧数保持60fps是最佳,这要求每帧的...

  • 页面流畅度

    来源iOS 保持界面流畅的技巧 | Garan no dou 1.屏幕显示成像的原理 计算机系统中 CPU、GPU...

  • 流畅度测试

    本文章转载于搜狗测试 对于任何产品来说,流畅度的重要性都不言而喻,流畅度的好坏,对一个产品的体验和口碑有着极大的影...

  • 《移动App性能评测与优化》——流畅度总结

    流畅度优化流程 通过SM对App的流畅度进行测试评估。 优化App的UI来提升流畅度。 通过lint静态扫描代码中...

  • Android性能优化-检测App卡顿

    在移动APP性能评测-流畅度评测中,我们介绍了如何准确客观评价APP的流畅度,最终采用SM指标来评价应用的流畅度,...

  • Android性能优化----UI流畅度优化

    现实开发中用到的性能优化方案 归纳如下: 说到UI流畅度首先要知道为什么不流畅,在这之前要明白一个概念:60fps...

  • Android性能优化记录

    ListView 性能优化:1.使用RecyclerView,使用ViewHolder2.为了提高流畅度,在滑动的...

  • 优化tableView的流畅度

    1 使用不透明视图。 **不透明的视图可以极大地提高渲染的速度。因此如非必要,可以将table cell及其子视...

网友评论

    本文标题:1.流畅度概念的诞生

    本文链接:https://www.haomeiwen.com/subject/bmxmcftx.html