Android UI渲染流程及优化

CPU和GPU

CPU作为"中央处理器",除了负责逻辑运算外,还需要做内存管理,显示操作,因此随着各种复杂App的出现,其实际运算的性能会大打折扣。
设计原由: 为了提高图像显示效率以及显示复杂的图像,设计出了GPU
主要功能:为了帮助CPU分担图像显示
在这里插入图片描述

XML布局显示至屏幕的流程

在这里插入图片描述

FPS

12fps:画面帧率高于每秒约10-12帧时,眼睛会认为它是连贯的
24fps:有声电影拍摄一般为每秒24帧
30fps:早期动态电子游戏,一般会在每秒30帧左右
60fps:手机交互过程中,需要触摸和反馈,需要60帧才能达到不卡顿的效果

Android每隔16ms就会发送一个vsyc信号,对我们的UI进行渲染,如果每次都能成功的话,就可以达到流畅的60fps的效果。

所以我们的优化目标是
  • CPU减少XML转换成对象的时间
  • GPU减少重复绘制

过渡绘制

GPU每隔16ms渲染一次,如果CPU传递过来的图像有重复的位置,会造成用户只能看到顶层画面,而底层画面则被覆盖,底层部分的绘制虽然用户无法看到,但同样占据了计算资源,造成不必要的绘制,这种情况就叫做过渡绘制。

小结

UI优化解决方案
  • 布局中的背景是否需要
  • 是否可以删除多余布局
  • 自定义View是否进行了相应的裁剪
  • 布局是否够扁平化
  • 使用Merge标签排除多余一层ViewGroup容器
  • 使用ViewStub进行布局的懒加载
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

氦客

你的鼓励是我创作最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值