android应用框架 平台结构 源代码结构 事件处理流程 Framework层收到事件的处理过程 电话处理流程
android应用框架 平台结构
第1层:
Linux操作系统及驱动
C语言实现
第2层:
本地框架和Java运行环境
C和C++实现
第3层:
Java框架(framework)
Java实现
第4层:
Java应用程序
Java实现
--
Linux操作系统及驱动
l Android的核心系统服务依赖于Linux 2.6内核, 包括安全性、内存管理、进程管理、网络协议栈和驱动模型
l Linux内核也同时作为硬件和软件之间的抽象层
---
Android 程序库
Android包含一些C/C++库,被Android系统中不同组件使用,通过应用框架为开发者服务
l 系统C库:标准C系统函数库(libc),为基于嵌入式Linux的设备定制的库
l 多媒体库:支持多种常用的音频、视频格式回放和录制,支持多媒体格式的编/解码格式
l Surface Manager:显示系统管理,提供2D和3D图层的无缝融合
l LibWebCore:Web浏览器引擎,支持Android浏览器及一个可嵌入式的Web视图
l SGL:Skia图形库,底层的2D图形引擎
l 3D libraries:基于OpenGL ES 1.0 APIs实现的库,可实现软件或硬件的3D加速(如果可用)
l FreeType:位图和矢量字体显示
l SQLite:数据库引擎
--
Android 运行环境(RunTime)
l AndroidJava基本运行环境提供了Java语言核心库内的大部分功能,由Dalvik Java虚拟机和基础的Java类库组成
l Dalvik虚拟机
Dalvik是Android中使用的Java虚拟机,每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机示例。Dalvik被设计成一个可以同时高效地运行多个虚拟机实例的虚拟系统
Dalvik虚拟机依赖于Linux内核的一些功能,比如线程机制和底层内存管理机制
--
Android 应用程序框架(framework)
Ø 为应用程序提供各种API接口
Ø 主要组件
l 丰富而又可扩展的视图(Views):可构建应用程序,包括列表、网格、文本框、按钮等基本UI元素
l 内容提供器(Content Providers):使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据库
l 资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串、图片和布局文件
l 通知管理器(Notification Manager):使得应用程序在状态栏中显示自定义的提示信息
l 活动管理器(Activity Manager):用来管理应用的生命周期并提供常用的导航回退功能
--
Android应用程序
l Android会附带一些核心的应用程序, 包括一个E-mail客户端、短信程序、日历、地图、浏览器、联系人等等。所有的应用程序都是由Java语言完成的
l 开发者可以利用Android Framework提供的接口开发自己的应用
--
Android源代码结构
工程名称 | 工程描述 |
bionic | C运行时支持:libc、libm、libdl、动态linker |
bootloader/legacy | Bootloader参考代码 |
build | Build系统 |
dalvik | Dalvik虚拟机 |
development | 高层的开发和调试工具 |
frameworks/base | Android核心的框架库 |
frameworks/polices/base | 框架配置策略 |
hardware/libhardware | 硬件抽象层库 |
hardware/ril | 无线接口层(Radio Interface Layer) |
kernel | Linux内核 |
prebuild | 对Linux和Mac OS编译的二进制支持 |
system/core | 最小化可启动的环境 |
system/extras | 底层调试和检查工具 |
--
事件处理流程
事件的定义:
主要是从驱动层反馈上来的与硬件设备相关的事件。
例如U8220设备相关事件:
Ø input: synaptics-rmi-touchscreen as/devices/virtual/input/input0 触摸事件
Ø input: gsensor as/devices/virtual/input/input1 传感器
Ø input: surf_keypad as/devices/virtual/input/input2 按键
Ø input: jogball as/devices/virtual/input/input3 轨迹球
input:msm-handset as /devices/virtual/input/input4 耳机
--
事件从底层反馈的过程:
--
Framework层收到事件的处理过程:
--
电话处理流程
Phone模块主要完成对Ril协议的响应和对Ril的主动调用,并对当前Ril的状态作一个实时的显示处理,提供用户一个良好的语音通话用户界面。
--
电话处理流程
以用户被叫流程为例:
当进行被叫时,GsmPhone会把新来电信息发送给CallNotifier,CallNotifier然后查询来电铃声,查询完毕后调用Ringer来播放来电铃声,同时启动InCallScreen,显示来电界面。
--