搭建婚恋系统源码,软件是怎么显示在设备上的

本文详细解析了Android婚恋系统源码的显示过程,包括应用侧的测量、布局和绘制,以及系统侧的SurfaceFlinger渲染。通过CPU计算和GPU渲染,配合VSync信号实现流畅显示。同时,介绍了进程间通讯机制中的匿名共享内存和显示刷新机制中的双缓冲技术,确保高效、无卡顿的图像显示。
摘要由CSDN通过智能技术生成

一、概要

婚恋系统源码显示的过程:婚恋系统源码调用SurfaceFlinger服务把经过测量、布局和绘制后的Surface渲染到显示屏幕上。

SurfaceFlinger:android系统服务,负责管理android系统的帧缓冲区,即显示屏幕。 Surface:android应用的每个窗口对应一个画布(Canvas),即Surface,可以理解为android婚恋系统源码的一个窗口。

婚恋系统源码的显示过程包含了两个部分(应用侧绘制、系统侧渲染)、两个机制(进程间通讯机制、显示刷新机制)。

二、应用侧绘制

一个android应用程序窗口里面包含了很多UI元素,这些元素是以树形结构来组织的,即它们存在着父子关系,其中,子UI元素位于父UI元素里面。

因此,在绘制一个婚恋系统源码窗口的UI之前,首先要确定里面的各个子UI元素在父UI元素里面的大小和位置。确定各个子UI元素在父UI元素里面的大小以及位置的过程有称为测量过程和布局过程。因此,婚恋系统源码窗口的UI渲染过程可以分为测量、布局和绘制三个阶段。

测量:递归(深度优先)确定所有视图的大小(宽、高) 布局:递归(深度优先)确定所有视图的位置(左上角坐标) 绘制:在画布canvas绘制应用程序窗口的所有视图

三、系统侧渲染

android应用程序在图形缓冲区中绘制好View层次结构后,这个图形缓冲区会被交给SurfaceFlinger服务,而SurfaceFlinger服务再使用OpenGL图形库API来将这个图形缓冲区渲染到硬件帧缓冲区中。

android图像显示的底层原理:

CPU:作用是计算图片的形状和文字的纹体 GPU:功能是渲染图像的颜色 Display:屏幕显示图像 Vsync:垂直同步信号,显卡输出频率与屏幕刷新频率同步的信号 android图像在绘制的时候,首先是CPU计算出图像形状,计算完成CPU会将图像交给GPU渲染出颜色,如果这一切都能够在16ms内完成,那么在下一个VSync出现时,就能显示刚刚渲染出来的那一帧图像了。但是如果CPU和GPU处理一帧图像时间超过16ms,那么这帧图像只能等到第二个VSync出现时才能刷出屏幕,呈现给用户了,这就意味着用户在32ms内所看到的是同一帧图像,这就是所谓的掉帧,也就是卡顿了。

四、进程间通讯机制

婚恋系统源码为了能够将自己的UI绘制在系统的帧缓冲区上,它们就必须要与Surface服务进行通信。 android应用程序与SurfaceFlinger服务是运行在不同的进程中的,因此,它们采用某种进程间通信机制来进行通信。由于婚恋系统源码在通知SurfaceFlinger服务来绘制自己的UI的时候,需要将UI数据传递给SurfaceFlinger服务,例如,要绘制UI的区域、位置等信息。一个android应用程序可能会有很多个窗口,而每一个窗口都有自己的UI数据,因此,android系统的匿名共享内存机制就派上用场了。

每一个android应用程序与SurfaceFlinger服务之间,都会通过一块匿名共享内存来传递UI数据。但是单纯的匿名共享内存在传递多个窗口数据时缺乏有效的管理,所以匿名共享内存就被抽象为一个更上流的数据结构SharedClient。

在每个SharedClient中,最多有31个SharedBufferStack,每个SharedBufferStack都对应一个Surface,即一个窗口。一个SharedClient对应一个android应用程序,而一个android应用程序可能包含多个窗口,但至多可以包含31个窗口。每个SharedBufferStack中又包含了N个缓冲区(android4.1以下,N = 2,4.1以上,N = 3),即显示刷新机制中即将提到的双缓冲和三缓冲技术。

五、显示刷新机制

一般婚恋系统源码在绘制UI的时候,都会采用一种称为“双缓冲”的技术。双缓冲意味着要使用两个缓冲区,其中一个被称为Front Buffer,另外一个被称为Back Buffer。UI总是先在Back Buffer中绘制,然后再和Front Buffer交换,渲染到显示设备中。在android4.1中引入了VSync,这类似于时钟中断,每收到VSync中断,CPU就开始处理各帧数据。

声明:本文由云豹科技转发自Android_XG博客,如有侵权请联系作者删除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值