Android渲染机制是如何工作的?

Android渲染机制

Android渲染机制是如何工作的?

一、Android渲染机制

在Android系统中,渲染机制是确保用户界面流畅和响应迅速的关键环节,它涉及到从应用层生成UI数据到最终显示在屏幕上的整个过程,本文将详细解析Android渲染机制的核心组件和流程,包括Vsync信号协调、SurfaceFlinger工作机制、以及应用程序的基本架构。

二、Vsync信号与渲染同步

Vsync信号的重要性

Vsync(Vertical Synchronization)信号是Android系统用于协调应用和SurfaceFlinger完成UI渲染和显示的重要机制,它的主要目的是避免Tearing现象,即屏幕显示内容不完整的情况。

Vsync-offset引入原因

在Android系统中,Vsync信号有两个消费者:App和SurfaceFlinger,为了提升“跟手性”(降低输入响应延迟),这两个消费者接收Vsync信号时会有一个时间差,称为vsync-offset,通过合理规划App和SurfaceFlinger接收Vsync信号的时机,可以有效降低延迟,提高用户体验。

Vsync信号的分发

EventControlThread:控制硬件Vsync的开关。

DispSyncThread:软件产生Vsync的线程。

SF EventThread:SurfaceFlinger接收Vsync信号用于渲染。

App EventThread:接收Vsync信号并上报给App进程,开始画图。

三、SurfaceFlinger工作机制

组成架构

SurfaceFlinger是Android系统中负责合成所有Surface并显示到物理屏幕上的服务,它采用双缓冲机制,避免图像撕裂现象,其工作流程如下:

收集所有需要显示的Surface。

Android渲染机制是如何工作的?

按照一定顺序进行排序。

合成到一个大的Surface中。

显示到物理屏幕上。

关键线程

EventControlThread:控制硬件Vsync的开关。

DispSyncThread:软件产生Vsync的线程。

SF EventThread:SurfaceFlinger接收Vsync信号用于渲染。

App EventThread:接收Vsync信号并上报给App进程,开始画图。

四、应用程序基本架构

Android应用进程核心组成

Android应用进程的核心类包括PhoneWindow、Activity、ViewRootImpl等,PhoneWindow的构建是一个非常重要的过程,应用启动显示的内容装载到其内部的mDecor中,Activity要能接收控制也需要mWindowManager发挥作用。

ViewRootImpl的作用

ViewRootImpl是应用进程运转的发动机,内部包含mView(控件树)、mSurface(画布)、Choregrapher(请求Vsync信号),应用的UI渲染会直接放到mSurface中,Choregrapher使得应用请求Vsync信号,接收信号后开始渲染流程。

应用冷启动流程

应用冷启动的第一步是创建进程,这与Linux类似C/C++程序是一致的,Android通过fork孵化应用进程,子进程继承父进程的资源,如art虚拟机实例、预加载的class/drawable资源等,这一过程以付出一些开机时间为代价,但能节省内存并加速应用性能。

五、渲染常见问题及优化

Android渲染机制是如何工作的?

GPU过度绘制(OverDraw)

OverDraw是指一个界面出现层层绘制的情况,会导致性能下降,可以使用第三方工具检测OverDraw,优化布局层级,减少不必要的界面元素,使用png格式的图片,避免使用jpg格式的图片,因为png颜色过渡平滑且支持透明。

渲染时间线分析

正常情况下,Android的GPU会在16ms内完成页面的绘制,如果超过这个时间,垂直同步机制会让显示器等待GPU完成栅格化渲染操作,从而看起来画面停顿,计算渲染的大多数操作必须在16ms内完成,以保证流畅的画面。

六、相关问题与解答

1. requestLayout和invalidate的区别?

requestLayout:请求重新测量和布局当前视图及其子视图,通常用于父布局发生变化时,需要重新测量和布局子视图。

invalidate:请求重新绘制当前视图,通常用于视图内容发生变化时,需要刷新视图。

2. performTraversals到底是干什么了?

performTraversals是ViewRootImpl中的一个方法,负责执行测量、布局、绘制三大流程,它是整个UI渲染的核心方法之一,确保视图的正确显示和更新。

七、归纳

本文详细介绍了Android渲染机制的核心组件和流程,包括Vsync信号的协调、SurfaceFlinger的工作机制、应用程序的基本架构以及常见的渲染问题和优化方法,了解这些知识对于开发者在日常开发中优化应用性能、排查渲染问题具有重要意义。

小伙伴们,上文介绍了“android渲染机制”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。

原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/639727.html

Like (0)
Donate 微信扫一扫 微信扫一扫
K-seo的头像K-seoSEO优化员
Previous 2024-11-11 07:48
Next 2024-11-11 07:51

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

免备案 高防CDN 无视CC/DDOS攻击 限时秒杀,10元即可体验  (专业解决各类攻击)>>点击进入