Android性能优化典范(一),android音视频框架

本文介绍了Android性能优化中的VSYNC概念,解释了刷新率和帧率的关系,以及它们不一致导致的Tearing现象。通过理解双重与三重缓存机制,开发者可以避免卡顿问题。文章还提到了Profile GPU Rendering工具的使用,强调了60fps作为性能目标的原因,并讨论了Android系统如何利用GPU进行UI渲染,以及Invalidations, Layouts对性能的影响。此外,作者探讨了Overdraw问题及其优化方法,如clipRect和quickReject,以及内存管理中的Memory Churn对性能的影响。" 128058129,9257990,VCS & Design Compiler联合应用详解,"['VCS', 'DC', 'EDA', '集成电路']
摘要由CSDN通过智能技术生成

3) Understanding VSYNC

为了理解App是如何进行渲染的,我们必须了解手机硬件是如何工作,那么就必须理解什么是VSYNC。

在讲解VSYNC之前,我们需要了解两个相关的概念:

  • Refresh Rate:代表了屏幕在一秒内刷新屏幕的次数,这取决于硬件的固定参数,例如60Hz。

  • Frame Rate:代表了GPU在一秒内绘制操作的帧数,例如30fps,60fps。

GPU会获取图形数据进行渲染,然后硬件负责把渲染后的内容呈现到屏幕上,他们两者不停的进行协作。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

不幸的是,刷新频率和帧率并不是总能够保持相同的节奏。如果发生帧率与刷新频率不一致的情况,就会容易出现Tearing的现象(画面上下两部分显示内容发生断裂,来自不同的两帧数据发生重叠)。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

理解图像渲染里面的双重与三重缓存机制,这个概念比较复杂,请移步查看Graphics以及《了解Android 4.1之三:黄油项目 —— 运作机理及新鲜玩意》。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

通常来说,帧率超过刷新频率只是一种理想的状况,在超过60fps的情况下,GPU所产生的帧数据会因为等待VSYNC的刷新信息而被Hold住,这样能够保持每次刷新都有实际的新的数据可以显示。但是我们遇到更多的情况是帧率小于刷新频率。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

在这种情况下,某些帧显示的画面内容就会与上一帧的画面相同。糟糕的事情是,帧率从超过60fps突然掉到60fps以下,这样就会发生LAG,JANK,HITCHING等卡顿掉帧的不顺滑的情况。这也是用户感受不好的原因所在。

4) Tool:Profile GPU Rendering

性能问题如此的麻烦,幸好我们可以有工具来进行调试。打开手机里面的开发者选项,选择Profile GPU Rendering,选中On screen as bars的选项。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

选择了这样以后,我们可以在手机画面上看到丰富的GPU绘制图形信息,分别关于StatusBar,NavBar,激活的程序Activity区域的GPU Rending信息。

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

随着界面的刷新,界面上会滚动显示垂直的柱状图来表示每帧画面所需要渲染的时间,柱状图越高表示花费的渲染

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值