关于Android Framework渲染机制,你需要学习哪些?

聊到Android的渲染流程部分,部分Android开发脑海中估计又会想起面试官在面试时提出的那些死亡面试题:

  1. Android渲染的整体架构是怎样的?

  2. Android渲染的生产者包括哪些?Skia与OpenGl的区别是什么?

  3. Android渲染的消费者是什么? 什么是SurfaceFlinger?

  4. 什么是硬件加速?硬件绘制与软件绘制的区别

  5. Android渲染缓冲区是什么?什么是黄油计划?

这些渲染机制,软硬件渲染部分经常会导致我们直接懵逼,然后免不了被面试官一阵吊打,伤的一身是包。那么该如何学习这些知识呢,我们先来看看Android渲染的整体架构,具体可分为以下几个部分:

  • image stream produceers: 渲染数据的生产者,如App的draw方法会把绘制指令通过canvas传递给framework层的RenderThread线程。

  • native Framework: RenderThread线程通过surface.dequeue得到缓冲区graphic bufer,然后在上面通过OpenGL来完成真正的渲染命令。在把缓冲区交还给BufferQueue队列中。

  • image stream consumers: surfaceFlinger从队列中获取数据,同时和HAL完成layer的合成工作,最终交给HAL展示。

  • HAL: 硬件抽象层。把图形数据展示到设备屏幕

    可以看出,这其实是个很典型的生产者消费者模式

    image

    • 图像生产者: 也就是我们的APP,再深入点就是canvas->surface。

    • 图像消费者:SurfaceFlinger

    • 图像缓冲区:BufferQueue,一般是3缓冲区

总得来说,Android图像渲染机制是一个生产者消费者的模型,如下图所示: image

  • onMeasure、onLayout计算出view的大小和摆放的位置,这都是UI线程要做的事情,在draw方法中进行绘制,但此时是没有真正去绘制。而是把绘制的指令封装为displayList,进一步封装为RenderNode,在同步给RenderThread。

  • RenderThread通过dequeue拿到graphic buffer(surfaceFlinger的缓冲区),根据绘制指令直接操作OpenGL的绘制接口,最终通过GPU设备把绘制指令渲染到了离屏缓冲区graphic buffer。

  • 完成渲染后,把缓冲区交还给SurfaceFlinger的BufferQueue。SurfaceFlinger会通过硬件设备进行layer的合成,最终展示到屏幕。

我们都知道,想要学好渲染,就必须对surfaceflinger、Choreographer、Skia引擎有更加全面和清晰的认识。其中涉及的知识点也较多,需要把这些都融汇串通起来,但是靠自学这很难!

如果你还没有点亮渲染这块的技能点,并且想要在最短时间里吃透它,理解它,那么必须要跟着真正有实力的大佬学习!

这里特别收集了Android大厂开发大佬精心整理的 《深入Framework渲染机制》

如果你需要此份文档资料,可以直接私信或者留言【渲染】即可领取开发文档资料以及各种其它Android进阶资料。

对于想要全面学习Android开发的同学来说,也可以找我领取这套《腾讯T10 实战笔记大全》(部分资料整理自互联网),内容包含:

  1. Android 项目开发基础必备手册

  2. T10 级性能优化大全手册

  3. Framework与Android内核系统信息

  4. Jetpack Compose

  5. Android 音视频开发学习手册(初-中-高)

  6. Android 架构技术必备手册

  7. Android车载知识点手册

  8. Flutter 3.0学习手册

  9. 鸿蒙开发学习文档

  10. Kotlin 基础语法大全

一丶Android 项目开发基础必备手册

(知识点: 注解、泛型、Retrofit、架构动态编程技术原理、Butterknife、JavaSSit丶虚拟机丶并发内存丶Synchronize丶并发原理之线程池丶数据序列化)

二丶T10级性能优化大全手册

(知识点: 启动优化、内存优化、启动优化速度、卡顿优化、布局优化、崩溃优化、应用启动全流程(源码深度解析)等内容)

三丶Framework与Android内核系统信息

(知识点:Framework通信、Framework底层服务、Framework事件机制等内容)

四丶Jetpack Compose

(知识点: 自动化构建APP、Compose等内容,compose已经更新完成)

五丶Android音视频开发学习手册(初-中-高)

(知识点:Android初级音视频开发【1-7】、Android中级音视频开发【8-19】、Android高级音视频开发【20-51】等内容)

六丶Android 架构技术必备手册

(知识点: 架构师通用技能、网络访问、图片加载、数据库管理框架、进程通信框架、Rx响应式编程、注入解耦、组件化、插件化、等内容)

七丶Android车载知识点手册

(知识点:Android Auto、汽车媒体应用、构建Android Auto即时通信、导航与地图应用、Android Automotive OS视频应用、Android车载应用、Android汽车应用等内容)

八丶Flutter 3.0学习手册

(知识点: Flutter动画、Flutter组件、Dart、弹框、网络请求、实站等)

九丶鸿蒙开发学习文档

(知识点:Ability组件、分布式任务、事件总线、鸿蒙线程、UI自定义控件等内容)

十丶Kotlin 基础语法大全

(知识点:对象丶类丶继承丶变量丶常量丶拓展函数等内容)

如果你需要此份文档资料,可以直接私信或者留言【渲染】即可领取开发文档资料以及各种其它Android进阶资料。

猜你喜欢

转载自blog.csdn.net/m0_64420071/article/details/126109836