android framework
主的器皿
这个作者很懒,什么都没留下…
展开
-
android framework 图解
原创 2013-04-22 18:01:39 · 3968 阅读 · 0 评论 -
Android应用框架无边界
Android 的应用框架的外特性空间的描述在SDK文档(http://androidappdocs.appspot.com/guide/topics/fundamentals.html#acttask)有十分清楚的描述,Android应用的基本概念,组件生命周期等等有详细的描述。在外特性空间中,Android提供了Activity,Service,Broadcast receivers,Cont原创 2013-05-06 17:38:58 · 894 阅读 · 0 评论 -
Android Application分析
Application是Activity,Service之类的组件上下文描述。Application并不是Android的核心概念,而Activity才是Android的核心概念。2.1 应用进程名称不管Activity,Service等组件如何设计,它要提供服务,就必须要依附在Linux 的进程上,建立消息循环,组件才能够真正的运作。Activity实例是如何Host原创 2013-05-06 18:01:18 · 941 阅读 · 0 评论 -
Android GDI共享缓冲区
1 native_handle_对private_handle_t 的包裹private_handle_t是gralloc.so使用的本地缓冲区私有的数据结构,而Native_handle_t是上层抽象的可以在进程间传递的数据结构。numFds=sNumFds=1;numInts=sNumInts=8;这个是Parcel中描述句柄的抽象模式。numFds=1 表示有一个文件原创 2013-05-07 10:52:08 · 766 阅读 · 0 评论 -
Android电话系统GSMCallTacker分析
GSMCallTracker本质上是一个Handler。GSMCallTracker是Android的通话管理层。GSMCallTracker建立了ConnectionList 来管理现行的通话连接,并向上层提供电话调用接口。在GSMCallTracker中维护着通话列表:connections。顺序记录了正连接上的通话,这些通话包括:ACTIVE,DIALING,ALERTING,HOL原创 2013-04-28 16:43:41 · 789 阅读 · 0 评论 -
Android GDI基本框架
在Android最繁杂的就是GDI 相关的代码了。这么多的代码和框架就干了一件事情:对显示缓冲区的操作和管理。GDI主要管理图形图像的输出,从整体方向上来看,GDI 可以被认为是一个物理屏幕使用的管理器。输出是否能在屏幕上看见,则需要GDI来管理。GDI在上层为GUI提供一个抽象的概念,GDI输出抽象成了文本,画笔,位图操作等设备无关的操作,GDI 负责将文本、线条、位图等概念对象原创 2013-05-07 10:26:21 · 1604 阅读 · 0 评论 -
Android Activity分析
3Activity 设计框架3.1 外特性空间的Activity对于AMS来讲,这个Activity就是客服端的Activity。DemoActivity extend Activity{onCreateonResumeonPauseonStop}在Android 的外特性空间(SDK)中,程序员根本不知道进程是什么时候起来的,系统消息是如何传递过来的。这个原创 2013-05-07 10:11:17 · 841 阅读 · 0 评论 -
Android GDI显示缓冲管理
从最根源的硬件帧缓冲区开始。显示FrameBuffer在系统中就是一段内存,GDI 的工作就是把需要输出的内容放入到该段内存的某个位置。1 基本知识1.1 点的格式对于不同的LCD 来讲,FrameBuffer的二进制格式不一样,并且可以分为两部分:1)点的格式:通常将Depth,即多少位表示一个点。1 位表示一个点2 位表示一个点16 位表示一个点32 位表示一个原创 2013-05-07 10:48:46 · 801 阅读 · 0 评论 -
Android SurfaceFlinger分析
SufaceFlinger的构成并不是太复杂,复杂的是他的客户端建构。SufaceFlinger主要功能是:1) 将Layers (Surfaces)内容的刷新到屏幕上2) 维持Layer的Zorder序列,并对Layer 最终输出做出裁剪计算。3) 响应Client要求,创建Layer与客户端的Surface连接4) 接收Client 要求,修改Layer属性(输出大小,Alph原创 2013-05-07 14:13:24 · 2628 阅读 · 0 评论 -
Android SurfaceFlinger动态结构
1 SurfaceSession 的建立客户端请求建立Surface时,首先要与SurfaceFlinger建立一个Session,然后在Session上建立一个Connection。WindowManagerService在添加第一个窗口前会检查SurfaceSession 是否建立,如何没有建立,将会新建立一个实例来代表与SurfaceFlinger的一个连接。new SurfaceS原创 2013-05-07 14:25:55 · 1325 阅读 · 0 评论 -
Android Surface&Canvas
Canvas 为在画布的意思。Android上层的作图几乎都通过Canvas实例来完成,其实Canvas更多是一种接口的包装。drawPaints ,drawPoints,drawRect,drawBitmap ...1 Canvas与Surface之间本质关系我们不去研究Skia图形引擎本身,我们需要了解的我们的所做的图形到底放置到了那个地方,并且这个Canvas如何与Surfa原创 2013-05-07 14:32:41 · 1463 阅读 · 0 评论 -
Android电话系统RIL-Java分析
RIL-Java在本质上就是一个RIL代理,起到一个转发的作用,是Android Java 概念空间中的电话系统的起点。在RIL-D的分析中,我们知道RILD建立了一个侦听套接口,等待RIL-Java 的连接。一旦连接成功,RIL-JAVA 就可发起一个请求,并等待应答,并将结构发送到目标处理对象。在RIL-Java 中,这个请求称为RILRequest。RIL-Java 的框架图。原创 2013-04-28 16:23:43 · 989 阅读 · 0 评论 -
Android电话系统分析
Android 电话系统之概述篇首先抛开Android :(1)来电时,我们要播出来电铃声,接通时我们需要切换语音通道,这(2)上网网络通路建立(例如GSM GPRS),如何PPP 连接到LinuxSocket 通道?系统如何管理数据连接?(3)WAP跟Modem通讯通过AT指令,如何将AT指令变成一个个具体的操作函数,管理Modem 发给我们的回应,AT命令通道,数据通道如何管理原创 2013-04-28 14:23:20 · 1001 阅读 · 0 评论 -
Android GWES 输入系统分析
输入的本质上的工作就是收集用户输入信息并放置到目标位置。Android 在源代码分类上,并没有输入系统分类。Android 输入系统的组成输入系统由如下几部分组成:1)后台窗口管理服务2)Focus Activity3)Focus Window4)Focus View:用来接收键盘消息Android 的Window Manager 服务解决了用户信息输入原创 2013-04-28 07:33:38 · 863 阅读 · 0 评论 -
ServiceManager分析
Service Manager 的工作就是登记功能。服务通过add_service方法将自己的名字和Binder 标识handle 登记在svclist 中。而服务请求者,通过check_service方法,通过服务名字在service list 中获取到service 相关联的Binder 的标识handle,通过这个Handle 作为请求包的目标地址发起请求。通讯:IPC。Andr原创 2013-04-24 13:42:46 · 4074 阅读 · 0 评论 -
JNIEnv说明
JavaVM接口第一种方式,在加载动态链接库的时候,JVM会调用JNI_OnLoad(JavaVM* jvm, void* reserved)(如果定义了该函数)。第一个参数会传入JavaVM指针。第二种方式,在native code中调用JNI_CreateJavaVM(&jvm, (void**)&env, &vm_args)可以得到JavaVM指针。两种情况下,都可以原创 2013-04-24 13:59:08 · 9917 阅读 · 0 评论 -
Android启动过程分析
Android 从Linux系统启动4步骤;(1) init 进程启动(2) Native Service 启动(3) System Server 启动,Android service 启动(4) Home 启动1.init进程(system\core\init)init进程,是一个由内核启动的用户级进程。内核自行启动(被载入内存,初始化所有的设备驱动程序和数据结构原创 2013-04-25 08:40:26 · 843 阅读 · 0 评论 -
Service分析
Android 体系架构有三种意义上服务:Native 服务,Android 服务,Init 空间服务。Navite 服务,指完全在C++空间完成的服务,主要是指系统一开始初始化,通过Init.rc 脚本起来的服务,例如ServiceManger service,Zygote service,Media service , ril_demonservice 等。Android 服务原创 2013-04-24 16:33:11 · 800 阅读 · 0 评论 -
Android GWES 基本框架分析
用GWES来表示Android 的窗口事件系统不是那么准确,在Android 中Window 是个弱化了的概念,更多的表现在View 这个概念上。原始GUI 基本框架首先我们从Android的SDK 外特性空间开始,在编写Actvitiy 时,我们都是面对的处理函数:OnXXXX(),例如有按键按下就是OnKeyDown 等,在这个过程中系统做了怎样的处理?要详细的理解这个过程,我们就原创 2013-04-27 20:55:33 · 769 阅读 · 0 评论 -
Android GWES消息系统分析
消息系统的基本原理从一般的系统设计来讲,一个消息循环系统的建立需要有以下几个要素:发送消息消息队列消息分发消息读取首先来研究一下消息驱动的基本模型,我使用如下的图形来表示一个消息系统最基本构成:上面的模型代表应用程序一直查询自己的消息队列,如果有有消息进来,应用消息处理函数中根据消息类型及其参数来作相应的处理。消息系统要运作起来,必定有消息的产生和消费。我们原创 2013-04-27 21:22:51 · 714 阅读 · 0 评论 -
Zygote Service分析
从大的架构上讲,Zygote 是一个简单的典型C/S 结构。其他进程作为一个客服端向Zygote 发出”孵化”请求,Zygote 接收到命令就“孵化”出一个Activity 进程来。Zygote系统代码组成及其调用结构:Zygote.java提供访问Dalvik “zygote”的接口。主要是包装Linux系统的Fork,以建立一个新的VM 实例进程。ZygoteConne原创 2013-04-25 08:47:38 · 948 阅读 · 0 评论 -
Android GWES 窗口系统
1.基本构架原理Android 的窗口管理是C/S 模式的。主View 被加入到WindowManager 中,WM 使用WindowState 与这个主View 对应。Client 通过WindowSession 将window 加入到WindowManager 中。一个完整的窗口概念横跨了View,ViewRoot,WindowManager Service。C原创 2013-04-28 07:18:06 · 729 阅读 · 0 评论 -
GWES输入路径分析
1 输入路径的一般原理按键,鼠标消息从收集到最终发送到焦点窗口?可分为不同的情况进行判定:(1)用户输入根据系统状况是否应该派送。(2)是否有拦截Listener(3)对按键事件来讲,是否存在输入法(4)是否是焦点终点(5)是否为焦点切换相关键1.1 一般的输入路径设计从活动主窗口到焦点窗口。信息输入路径分为两步:Step 1)窗口管理器将信息发送到原创 2013-04-28 13:53:00 · 766 阅读 · 0 评论 -
Android 电话系统rild分析
Rild是Init进程启动的一个本地服务,这个本地服务并没有使用Binder通讯手段,而是采用了socket 通讯方式。由于Android 开发者使用的Modem 是不一样的,各种指令格式,初始化序列都可能不一样,GSM 和CDMA 就差别更大了,所以为了消除这些差别,Android设计者将ril做了一个抽象,使用一个虚拟电话的概念。这个虚拟电话对象就是GSMPhone(CDMAPhone),原创 2013-04-28 15:47:49 · 1019 阅读 · 0 评论