前言
Android面试的时候经常会问到,你怎么做布局的优化,一般都会答减少嵌套,布局层级不能嵌套太深,那么布局为什么不能嵌套太深呢,什么导致布局层级嵌套过程而UI卡顿呢,它的原理是什么?这篇文章深入理解布局渲染流程与布局优化。
一.CPU与GPU
CPU是电脑的大脑、中央处理器,因此CPU的任务繁多,做逻辑计算外,还要做内存管理,显示操作,因此在实际运算的时候性能会大大折扣,在没有GPU 的时代不能显示复杂的图形,其运算速度远跟不上今天复杂的三维游戏的要求,及时CPU 的工作频率超过2GHz或更高,对它绘制图形提高也不打。这时GPU设计就出来了,CPU会通过某种方式将图形相关任务一些交给GPU处理。
image.png image.png
蓝色的Control为控制器,用于协调控制整个CPU的运行,包括取出指令,控制其他模块的运行等;
蓝色的ALU是算术逻辑单元,用于进行数学、逻辑运算;
橙色的Cache和DRAM分别为缓存和RAM,用于存储信息;
CPU的控制较为复杂,而ALU数量较少,因此CPU擅长各种复杂的逻辑运算,但不擅长数学尤其是浮点运算
为什么说ALU进行数学逻辑运算,则比较擅长UI的显示呢?
显示器显示缓画面的时候进行的是像素的转化,比如红色变成绿色,红色是FF0000,绿色是00FF00十六进制颜色码,那如果说要变色是不是就意味着计算十六进制的改变
二.XML布局显示到屏幕的流程
image.png栅格化:就是把图像放大到每一个小格子,GPU就是把这一个一个小格子展示到显示器上。
image.png为什么是在16ms内完成呢?
image.png image.png卡顿原理分析(16ms主要被两件事占用)
1.将UI对象转换成多边形和纹理
2.CPU传递数据到GPU,GPU进行绘制
如何减少这里部分时间
1.CPU减少xml转换成对象的时间
2.GPU减少重复绘制(GPU很傻)
三.什么是过渡绘制
image.png三.查看过渡绘制的工具
手机->开发者选项->调试GPU过渡绘制
image.png image.png
网友评论