Android Framework 视图框架
文章平均质量分 94
龚礼鹏
写作的过程会有更多的思考,是思维提升以及维度扩展的过程,这就是写作的魅力。Android应用架构师、AndroidFramework工程师、OpenHarmony应用开发工程师、OpenHarmony 系统工程师、flutter开发工程师,擅长用java、kotlin、arkts、c、c++、dart写hello world
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
图像显示框架十三——BufferQueue的工作流程(基于Android 15源码分析)
指出了是一个“状态更新+条件触发”的过程,其核心是更新中的状态机。真正意义上的释放 是指缓冲区从ACQUIRED状态成功迁移到FREE状态,并被加入到空闲缓冲区集合中。随后通过回调通知生产者,从而完成一个“释放-申请-使用”的完整循环。原创 2026-01-31 20:23:58 · 925 阅读 · 1 评论 -
图像显示框架十二——BufferQueue的工作流程(基于Android 15源码分析)
本文分析了Android图形系统中消费者端的回调机制。当生产者通过BufferQueueProducer::queueBuffer将缓冲区加入队列后,会通过frameAvailableListener通知消费者。该监听器实际上是ConsumerBase实例,通过BufferQueueConsumer::connect设置。回调流程为:生产者入队缓冲区→触发onFrameAvailable回调→通知消费者获取新数据。关键点在于BufferQueueCore维护的mConsumerListener在Consum原创 2026-01-29 20:27:46 · 778 阅读 · 0 评论 -
图像显示框架十一——BufferQueue的工作流程(基于Android 15源码分析)
本文主要聚焦生产者一端的处理逻辑,分析了如何获取buffer以及填充数据后返还buffer的流程。下一篇来介绍消费者一端的处理逻辑。原创 2026-01-29 17:15:58 · 931 阅读 · 0 评论 -
图像显示框架十——BufferQueue的工作流程(基于Android 15源码分析)
源码定义BufferSlot理解为缓冲槽,一个存放buffer及其信息的地方。这个结构体中主要有如下内容:源码:/frameworks/native/libs/gui/include/gui/BufferSlot.h如下是BufferState的源代码// BufferState 追踪缓冲区槽位可能处于的状态。// 构造函数:所有槽位最初都是 FREE 状态(空闲): mDequeueCount(0), // 出队计数mQueueCount(0), // 入队计数。原创 2026-01-26 19:53:06 · 986 阅读 · 0 评论 -
图像显示框架九——Surface/SurfaceControl基础概念(基于Android15源码分析)
代码位置:framework/native/libs/nativewindow/include/system/window.h// 构造函数:初始化 magic number、版本号及各类窗口属性默认值// 魔术字,用于类型验证// 结构体版本// 保留字段置零// 以下两个函数实现了引用计数功能,使 ANativeWindow 可由 sp<> (强指针) 自动管理生命周期#endif。原创 2026-01-22 16:52:58 · 1041 阅读 · 0 评论 -
图像显示框架八——BufferQueue与BLASTBufferQueue(基于android 15源码分析)
构造函数完成后,已经准备好作为一个**“中间人”:向上提供Surface让应用绘图,向下将绘图结果转换为提交给系统,从而实现同步**的图形更新。然后再看下createBufferQueue函数代码/*** 创建 BufferQueue 的生产者和消费者接口* @param outProducer 输出参数,用于存放创建好的生产者句柄* @param outConsumer 输出参数,用于存放创建好的消费者句柄*/原创 2026-01-21 10:02:38 · 1245 阅读 · 0 评论 -
图像显示框架七——createSurface的流程(基于Android 15源码分析)
<--2. onFirstRef()回调-------------------------------------||<--6. 返回ISurfaceComposer代理----------------------------||<--10. 返回ISurfaceComposerClient代理---------------------||---11. 保存到mClient成员--------------------------------->|然后再来看下createSurfaceChecked方法。原创 2025-12-20 20:35:53 · 1178 阅读 · 0 评论 -
图像显示框架六——SurfaceFlinger的初始化以及任务调度(基于Android 15源码分析)
然后是通过compositor.configure()将显示配置更新,由于SurfaceFlinger实现了Compositor接口,所以具体实现是在SurfaceFlinger中,然后我们看下SurfaceFlinger中的configure()方法。可以看出来任务调度器中继承了MessageQueue(消息队列),这个是和Android 12有所区别的,Android 12中MessageQueue是在SurfaceFlinger中实现的,这里做了解耦,将消息队列放到任务调度器里面了。原创 2025-12-11 20:30:16 · 1213 阅读 · 0 评论 -
图像显示框架五——SurfaceFlinger的启动流程(基于Android 15源码分析)
前面介绍了Native应用层如何与SurfaceFlinger进行通信的,但是我们还要了解SurfaceFlinger如何启动起来的,以及一些初始化处理,本文是基于Android 15源码以及Android 15设备进行分析的本篇涉及的代码位置: /frameworks/native/services/surfaceflinger/原创 2025-11-05 21:31:21 · 1338 阅读 · 0 评论 -
图像显示框架四——应用与SurfaceFlinger构建桥梁(基于Android 15源码分析)
上一篇介绍了如何创建Native的示例应用,从应用开发使用的角度去调用了相关api,从这篇来详细介绍如何调用到系统层,系统内部如何实现的本篇主要介绍应用与SurfaceFlinger的交互,即如何与SurfaceFlinger进行通信的。原创 2025-11-05 19:11:39 · 791 阅读 · 0 评论 -
Android 图像显示框架三——演示demo以及解析
本文解析了一个Android Native Surface演示程序,重点剖析了图像显示系统的核心机制。程序通过onFirstRef函数初始化Surface,包括建立SurfaceFlinger连接、配置显示属性和初始化BLASTBufferQueue。主程序采用"出队-渲染-入队"的缓冲区管理模式,实现颜色动画循环。关键技术包括:1)双缓冲机制避免显示撕裂;2)Fence系统确保GPU-CPU同步;3)CPU软件渲染RGBA8888格式图像;4)简单的红绿蓝三色循环动画逻辑,每秒切换1帧原创 2025-11-04 21:20:13 · 1110 阅读 · 0 评论 -
android 图像显示框架二——流程分析
1.图像生产者(Image Producer):负责生产(绘制)图像内容,例如:应用程序、视频解码器。2.图像消费者(Image Consumer):负责使用(消耗)已生成的图像内容。例如:将图像合成后送到显示屏的SurfaceFlinger。3.BufferQueue:作为核心中介,连接生产者和消费者,它管理着一组图形缓冲区(GraphicBuffer),是数据交换的通道。1.图像生产者(右侧)所有需要将画面绘制到屏幕上的实体。常见生产者::3D图形渲染库。Skia:2D图形绘制库,常用于。原创 2025-10-23 21:18:15 · 1231 阅读 · 0 评论 -
android 图像显示框架一——基础概念介绍
如下是新人小白的各种名词介绍方式底层各个组件名词介绍1.BufferQueue和gralloc我们可以把GraphicBuffer(图形缓冲区)理解为一辆装满货物(图像数据)的卡车,那么:BufferQueue(缓冲区队列):就像一条传送带或者是一个卡车排队通道。它连接着生产货物的“车间”(生产者)和消费货物的“仓库”(消费者)。传送带上面有很多空的卡车,生产者(如App)把货物装满一卡车后,卡车就开到通道末尾排队,等待消费者(如SurfaceFlinger)来取货。原创 2025-10-23 01:21:01 · 1517 阅读 · 0 评论
分享