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进行布局的懒加载