Android系统开发
文章平均质量分 79
以Android的4层体系架构为地图,分层总结与整理
大海之狂
技术开发是兴趣,工作是责任,学习是态度。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android图形-Hardware Composer HAL
HWC HAL是用于合成从Surfaceflinger接收到的图层,而分担GLES和GPU执行合成的压力,提升整体性能和效率HWC可以抽象出 overlays 和 2D blitter 对象来合成Surface,或者与特定窗口硬件通信来合成窗口。使用HWC来合成该窗口而不是用surfaceflinger通过GPU来合成原因?1)大部分GPU没有为合成优化2)当使用Surfaceflinger通过GPU来合成layers 时,应用是无法用GPU来做渲染的工作的。原创 2023-09-06 21:02:30 · 14680 阅读 · 0 评论 -
Android图形-组件-比较与理解
受硬件保护的路径必须显示在硬件混合渲染器叠加层上(也就是说,如果硬件混合渲染器切换到 OpenGL ES 合成,受保护的视频将从屏幕中消失)。与 Surface 配合使用的一些客户端需要 SurfaceHolder,因为用于获取和设置 Surface 参数的 API 是通过 SurfaceHolder 实现的。在需要渲染到单独的 Surface(例如,使用 Camera API 或 OpenGL ES 上下文进行渲染)时,使用 SurfaceView 进行渲染很有帮助。原创 2023-09-05 19:51:54 · 1278 阅读 · 0 评论 -
Android图形-架构2
BufferQueue 和 Gralloc:1)Bufferqueue 连接 图像流的生产者和消费者2)通过HAL层接口实现gralloc内存分配器用于执行缓冲区分配任务1)SurfaceFlinger接受来自多个源的数据缓冲区,然后将它们进行合成2)HWC 使用硬件合成缓冲区3)虚拟显示屏使合成输出可在系统内部使用(录屏或者通过网络发送屏幕)1)Surface可生成一个缓冲区队列,通常是给Surfaceflinger使用的。可以渲染到Surface上,最终传给消费者缓冲区。原创 2023-09-05 01:01:13 · 815 阅读 · 0 评论 -
Android图形-架构1
因此,在 SurfaceFlinger 将一个或两个缓冲区合成到第三个缓冲区中的过程中,它会使用 OpenGL ES。第三,有些图层是可以直接提交给HWC进行合成的,有些是通过SurfaceFlinger进行合成,然后再提交到HWC进行最终合成的;2)图像流消耗:图像流的消耗方是Surfaceflinger,该系统服务会消耗当前可见的 Surface,并使用窗口管理器中提供的信息将它们合成到屏幕。第二,从图2看出是通过GPU进行渲染,并且通过BufferQueue进行生产方和消费方的流转管理。原创 2023-09-05 00:14:06 · 681 阅读 · 0 评论 -
Android系统-线程-synchronized和volatile的区别
synchronized 和 volatile 都是线程同步涉及到的概念。理解和掌握好他们的区别有助于我们对代码逻辑的理解。原创 2023-08-30 10:46:51 · 366 阅读 · 0 评论 -
Android系统-线程-java线程
Android的框架应用是java环境的。java天生就是多线程。所以对java线程的理解尤为重要。原创 2023-08-30 10:28:16 · 213 阅读 · 0 评论 -
Android系统-进程-AIDL
Android系统的进程间通信,主要是Binder,AIDL就是一种Android接口定义语言,主要就是为了能更简单方便地实现跨进程通信。原创 2023-08-17 23:34:48 · 261 阅读 · 0 评论 -
Android系统-线程-消息处理机制
Android应用消息处理机制是怎么样的呢?跟Native,Linux底层都有些什么关系呢?原创 2023-08-17 00:56:12 · 240 阅读 · 0 评论 -
Android系统-ServiceManager2
1)ProcessState::self():用于获取ProcessState对象(也是单例模式),每个进程有且只有一个ProcessState对象,存在则直接返回,不存在则创建;如果对象存在则直接返回,对象不存在就创建该对象。2)getContextObject(): 用于获取BpBinder对象,对于handle=0的BpBinder对象,存在则直接返回,不存在才创建;defaultServiceManager 等价于 new BpServiceManager(new BpBinder(0));原创 2023-08-12 18:09:05 · 375 阅读 · 0 评论 -
Android系统-进程-Binder3-Binder机制与实现
编写demo程序,更深刻理解Binder IPC通信机制的架构和原理。原创 2023-08-12 18:25:23 · 618 阅读 · 0 评论 -
Android系统-进程-Binder2-Java层
对于Android系统,一般是从java层到native层,再到kernel驱动层,形成一个完整的软件架构。Android系统中的Binder IPC通信机制的整体架构,从java层到底层驱动层是怎么样的一个架构和原理的呢?原创 2023-08-12 18:44:18 · 308 阅读 · 0 评论 -
Android系统-进程-Binder1-概述
Android的binder是从openbinder发展过来的。包括了binder驱动,Native层,Java层。用经典问题作为对binder的理解之旅的起点。为什么选择binder?binder性能好,便捷,安全。性能好,就是别人多次拷贝,binder只需要一次拷贝。原创 2023-08-12 12:31:11 · 751 阅读 · 0 评论 -
Android图形-Vsync机制
当Vsync信号来的时候,就会唤醒EventThread线程,执行所有注册到EventThread的connection的分发出去,就是通过BitTube的mSendFd分发出去,分发出去后mReceivedFd就能接收到数据。那么如果刷新率>帧率,那么就是说,出图的速度低于屏幕刷新的速度,这是就会造成刷新的时候经常出现读取到的图像数据是同一幅图像的数据,但刷新率原创 2023-08-11 20:27:45 · 656 阅读 · 0 评论 -
Android图形-合成与显示-SurfaceTestDemo
通过一个最简单的测试程序直观Android系统的native层Surface的渲染显示过程。原创 2023-08-11 12:46:14 · 891 阅读 · 0 评论 -
Android系统-线程-线程同步
1、使用锁对象:通过使用ReentrantLock,synchronized关键字锁对象,实现线程同步。2、volatile关键字:声明一个volatile变量可以保证其对所有线程的可见性,每次写入操作都会强制刷新缓存。这种方法只适用于只有一个线程进行写操作,其他线程进行读操作的情况3、使用wait/notify机制:wait/notify机制是一种高级的,灵活的线程同步方法。原创 2023-08-11 09:47:29 · 828 阅读 · 0 评论 -
Android图形-刷新与显示
在Android系统中,绘制是由应用app来做的,对应CPU的操作,合成与渲染是由SurfaceFlinger完成,对应的是GPU。我们从视图描述看,第2帧的性能优化的不错,远远小于16ms,但是这一帧之所以会没能在16ms内完成绘制渲染提供缓存出来,是因为这一帧绘制的比较晚,导致这一帧还没有绘制完成就到了16ms了,这就是掉帧。如果只有一个缓存,那么屏幕在还没有读完缓存数据的时候,系统服务又在写缓存数据,那么屏幕读取的这一帧数据其实就包含了两帧的数据,显示出来的可能一半是第一帧,一半是第二帧数据了。原创 2023-08-05 13:36:02 · 875 阅读 · 0 评论 -
Android图形-合成与显示-概论
Activity是Android的主要UI相关组件,通过View的相关类和接口实现,在WMS的管理下,进行窗口和控件的测量,布局和绘制,形成的图层交给SurfaceFlinger进行合成渲染,然后提供给屏幕进行显示。原创 2023-08-11 01:08:06 · 1302 阅读 · 0 评论 -
Android系统-AMS
Android系统-服务AMS原创 2023-07-28 23:55:58 · 378 阅读 · 0 评论
分享