Android性能优化之布局优化

相关视频:Android性能优化之布局优化

一、基本知识:

  • 刷新率(Refresh Rate):指在一秒内刷新屏幕的次数,例如60HZ。
  • 帧率(Frame Rate):之GPU在一秒内操作画面的帧数,例如30fps,60fps。

二、UI刷新过程:

在一个典型的显示系统中,一般包括CPU、GPU和display三个部分;
display可以理解为屏幕或者显示器,CPU是用来计算图像数据的,然后把计算好的数据交给GPU,GPU会对图形数据进行渲染,再把渲染好的数据存到buffer(缓存区)里面,最后display也就是屏幕负责把buffer里面的数据呈现出来。
显示过程简单来说,就是CPU和GPU定时准备好数据放入buffer,而display会每隔一段时间从buffer读取数据进行展示。但是呢,这只是理想状态。在现实操作中,刷新率和帧率并不总是保持一致,也就是说GPU存入数据的时间和display读取的时间是不一致的。针对这个情况,android系统引入了VSYNC机制,即垂直同步,我们可以理解为帧同步。它是为了让GPU生成帧的速度和display刷新的速度保持一致。android系统会每16ms发送一次VSYNC的信号,去触发UI渲染更新,display只有收到VSYNC信号后,才会执行画面绘制。而VSYNC信号最重要的作用就是防止出现画面撕裂的情况,所谓画面撕裂,就是指一个画面上出现了两帧画面的内容,我们来看一下画面撕裂的实例:

为什么出现这种情况呢,一般都是显卡输出帧的速度高于显示器刷新帧的速度,从而导致显示器并不能及时处理需要显示的帧,最终出现了多个帧留在显示器上的问题,画面撕裂也就是帧率超过刷新率的情况,如下图所示:

其实,android中碰到更多的是情况是GPU刷新帧率的速度小于display刷新率的情况,如下图:

三、布局的选择:

 

  • FrameLayout能实现的优先使用FrameLayout;
  • 其次,优先使用RelativeLayout,它可以在不嵌套的情况下完成复杂的布局,在这一点上由于LinearLayout;
  • 当在不嵌套的情况下,RelativeLayout和LinearLayout能够同时满足需求时,优先选择LinearLayout,因为RelativeLayout相对复杂,同时会存在重复绘制的情况,
  • 避免OverDraw,OverDraw:是指屏幕上某一个像素点在同一帧的时间绘制了多次。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值