摘要:SurfaceFlinger对象建立过程示意 1 SurfaceSession的建立 客户端请求建立Surface时,首先在要与SurfaceFlinger建立一个Session,然后再Session上建立一个Connection通过概念返回Bclient对象。WindowManagerService在添加第一个窗口前会检查SurfaceSession是否建立,如何没有建立,将会新建立一个实例来代表与SurfaceFlinger的一个连接。 new SurfaceSession()@windowAddedLocked() @WindowManagerService.java。 Sur... 阅读全文
Android核心分析之二十六Android GDI之SurfaceFlinger
2013-12-26 15:01 by kingshow, 499 阅读, 0 推荐, 收藏, 编辑
摘要:Android GDI之SurfaceFlinger SurfaceFinger按英文翻译过来就是Surface投递者。SufaceFlinger的构成并不是太复杂,复杂的是他的客户端建构。SufaceFlinger主要功能是: 1) 将Layers (Surfaces) 内容的刷新到屏幕上 2) 维持Layer的Zorder序列,并对Layer最终输出做出裁剪计算。 3) 响应Client要求,创建Layer与客户端的Surface建立连接 4) 接收Client要求,修改Layer属性(输出大小,Alpha等设定) 但是作为投递者的实际意义,我们首先需要知道的是如何投递,投掷... 阅读全文
Android核心分析之二十五Android GDI之共享缓冲区机制
2013-12-26 14:55 by kingshow, 734 阅读, 0 推荐, 收藏, 编辑
摘要:Androird GDI之共享缓冲区机制 1native_handle_t对private_handle_t 的包裹 private_handle_t是gralloc.so使用的本地缓冲区私有的数据结构,而Native_handle_t是上层抽象的可以在进程间传递的数据结构。在客户端是如何还原所传递的数据结构呢?首先看看native_handle_t对private_handle_t的抽象包装。 qw.jpg (24.35 KB, 下载次数: 0)下载附件 保存到相册 2012-3-22 12:06 上传 numFds= sNumFds=1; numInts= sNumInts=8; ... 阅读全文
Android核心分析之二十四Android GDI之显示缓冲管理
2013-12-26 14:54 by kingshow, 315 阅读, 0 推荐, 收藏, 编辑
摘要:Android GDI之屏幕设备管理-动态链接库 万丈高楼从地起,从最根源的硬件帧缓冲区开始。我们知道显示FrameBuffer在系统中就是一段内存,GDI的工作就是把需要输出的内容放入到该段内存的某个位置。我们从基本的点(像素点)和基本的缓冲区操作开始。 1 基本知识1.1点的格式 对于不同的LCD来讲,FrameBuffer的二进制格式不一样,并且可以分为两部分: 1)点的格式:通常将Depth,即表示多少位表示一个点。 1位表示一个点 2位表示一个点 16位表示一个点 32位表示一个点(Alpha通道) 2) 点内格式:RGB分量分布表示。 例如对于我们常见的16位... 阅读全文
Android核心分析之二十三Andoird GDI之基本原理及其总体框架
2013-12-26 14:51 by kingshow, 800 阅读, 0 推荐, 收藏, 编辑
摘要:Android GDI基本框架 在Android中所涉及的概念和代码最多,最繁杂的就是GDI相关的代码了。但是本质从抽象上来讲,这么多的代码和框架就干了一件事情:对显示缓冲区的操作和管理。 GDI主要管理图形图像的输出,从整体方向上来看,GDI可以被认为是一个物理屏幕使用的管理器。因为在实际的产品中,我们需要在物理屏幕上输出不同的窗口,而每个窗口认为自己独占屏幕的使用,对所有窗口输出,应用程序不会关心物理屏幕是否被别的窗口占用,而只是关心自己在本窗口的输出,至于输出是否能在屏幕上看见,则需要GDI来管理。 111..jpg (6.19 KB, 下载次数: 3)下载附件 保存到相册 2012.. 阅读全文
Android核心分析之二十二Android应用框架之Activity
2013-12-26 14:49 by kingshow, 643 阅读, 0 推荐, 收藏, 编辑
摘要:3 Activity设计框架 3.1 外特性空间的Activity 我们先来看看,android应用开发人员接触的外特性空间中的Activity,对于AMS来讲,这个Activity就是客服端的Activity。应用程序员在建立Android应用时,构建Activity的子类就是Andoid外特性空间展现的接口。我们可以从下面的简单的例子描述看看Activity,到底如何建立的。 DemoActivity extend Activitya { onCreate onResume onPause onStop } 在Android的外特性空间(SDK)中,Android应用程... 阅读全文
Android核心分析之二十一Android应用框架之AndroidApplication
2013-12-26 14:47 by kingshow, 283 阅读, 0 推荐, 收藏, 编辑
摘要:Android Application Android提供给开发程序员的概念空间中Application只是一个松散的表征概念,没有多少实质上的表征。在Android实际空间中看不到实际意义上的应用程序的概念,即使有一个叫Application的类,这个也就是个应用程序上下文状态,是一个极度弱化的概念。Application只是一个空间范畴的概念,Application就是Activity,Service之类的组件上下文描述。Application并不是Android的核心概念,而Activity才是Android的核心概念。 从Android的SDK文档中,我们知道一般情况Androi... 阅读全文
Android核心分析之二十Android应用程序框架之无边界设计意图
2013-12-26 14:38 by kingshow, 216 阅读, 0 推荐, 收藏, 编辑
摘要:Android应用程序框架1 无边界设计理念 Android的应用框架的外特性空间的描述在SDK文档(http://androidappdocs.appspot.com/guide/topics/fundamentals。html#acttask)有十分清楚的描述,Android应用的基本概念,组件生命周期等等有详细的描述。在外特性空间中,Android提供了Activity,Service,Broadcast receivers,Content Provider,Intent,task等概念,我在这里不讨论这些概念定义,因为SDK文档已经讲得够详细。 在阅读SDK文档和研究Activi... 阅读全文
Android核心分析之十九电话系统之GSMCallTacker
2013-12-26 14:36 by kingshow, 381 阅读, 0 推荐, 收藏, 编辑
摘要:GSMCallTracker在本质上是一个Handler。1.jpg (1.52 KB, 下载次数: 1)下载附件 保存到相册 2012-3-22 11:20 上传 GSMCallTracker是Android的通话管理层。GSMCallTracker建立了ConnectionList来管理现行的通话连接,并向上层提供电话调用接口。2.jpg (2.6 KB, 下载次数: 0)下载附件 保存到相册 2012-3-22 11:20 上传 在GSMCallTracker中维护着通话列表:connections。顺序记录了正连接上的通话,这些通话包括:ACTIVE,DIALING,ALERTI... 阅读全文
Android核心分析之十八Android电话系统之RIL-Java
2013-12-26 14:23 by kingshow, 432 阅读, 0 推荐, 收藏, 编辑
摘要:Android RIL-Java 123.jpg (2.09 KB, 下载次数: 1)下载附件 保存到相册 2012-3-21 10:47 上传 RIL-Java在本质上就是一个RIL代理,起到一个转发的作用,是Android Java概念空间中的电话系统的起点。在RIL-D的分析中,我们知道RILD建立了一个侦听套接口,等待RIL-Java的连接。一旦连接成功,RIL-JAVA就可发起一个请求,并等待应答,并将结构发送到目标处理对象。在RIL-Java中,这个请求称为RILRequest。为了直观起见,我还是不厌其烦的给出RIL-Java的框架图。 456.jpg (9.81 KB, 下.. 阅读全文