页面渲染流程(硬件层面)
想要开发一款性能优越的应用,我们必须了解底层是如何运行的。有一个主要问题就是,Activity是如何绘制到屏幕上的?那些复杂的XML布局文件和标记语言,是如何转化成用户能看懂的图像的?
实际上,android布局文件最终展现给用户图形界面是通过格栅化操作来完成的,格栅化就是将例如字符串、按钮、路径或者形状的一些高级对象,拆分到不同的像素上在屏幕上进行显示,格栅化是一个非常费时的操作。我们所有人的手机里面都有一块特殊硬件,它就是图像处理器(GPU显卡的处理器),目的就是加快格栅化的操作,GPU在上个世纪90年代被引入用来帮助加快格栅化操作。
android系统中整个页面的渲染大概要经过如下步骤,下图是google官网提供的一份关于页面渲染的过程
我们首先了解几个概念:
GPU
显卡的处理器,目的就是加快格栅化的操作,GPU在上个世纪90年代被引入用来帮助加快格栅化操作。
GPU刷新
GPU帮助我们将UI组件等计算成纹理Texture和三维图形Polygons
同时会使用OpenGL—会将纹理和Polygons缓存在GPU内存里面。
GPU使用一些指定的基础指令集,主要是多边形和纹理,也就是图片,CPU在屏幕上绘制图像前会向GPU输入这些指令,这一过程通常使用的API就是Android的OpenGL ES,这就是说,在屏幕上绘制UI对象时无论是按钮、路径或者复选框,都需要在CPU中首先转换为多边形或者纹理,然后再传递给GPU进行格栅化
OpenGl|Es
这个属于软件层面,提供了丰富的3d绘图的api
CPU到GPU的数据传递
就类似于,电脑主机的cpu到显卡的数据传递过程,pc上是通过pcie总线来处理。手