系统架构图
第一层:应用程序层
eg:电话拨号器
图片浏览器 …… 都是由java开发的程序
第二层:应用程序框架层
是从事Android开发的基础,很多核心应用程序也是通过这一层来实现其核心功能的,该层简化了组件的重用,开发人员可以直接使用其提供的组件,也可以通过继承而实现个性化的拓展
1、activity manager(活动管理器)
管理各个应用程序生命周期以及通过导航的回退功能
2、window manager(窗口管理器)
管理所有窗口应用程序
3、content provider(内容提供器)
使不同的应用程序之间存取或者分享数据
4、view system(视图系统)
构建应用程序的基本组件
5、notification manager(通知管理器)
是应用程序可以在状态栏上显示自定义的提示信息
6、package manager(包管理器)
Android系统内的程序管理器
7、telephony manager(电话管理器)
管理所有的移动设备
8、resource manager(资源管理器)
提供应用程序使用的各种非代码资源 eg:本地化字符串 图片 布局文件 颜色文件
9、location manager(位置管理器)
提供位置服务
10、xmpp服务
提供Google talk服务
第三层:系统运行库层
系统运行库分为系统库
是应用程序框架的支持,是链接应用程序框架层与linux内核层的重要纽带
系统库分为:
surface manager 1、负责管理显示与存取操作间的互动(执行多个应用程序时) 2、负责2d绘图和3D绘图进行显示合成 meida framework 多媒体库,基于packetvideo opencore;支持多种常用的音视频的录制和回放,编码格式mpeg4、mp3、h264、aac、arm SQLite 小型关系型数据库引擎 opengles 根据OpenGL ES1.0 API标准实现的3D绘图函数库 freetype 提供点阵字和向量字的描述与显示 webkit 一套网页浏览器的软件引擎 SGL 底层的2D图形渲染引擎 SSL 在Android通信中实现握手 libc 从ESD继承而来的标准c系统函数库,专门为基于embedded linux的设备制定
Android runtime
程序在Android runtime中执行,其运行时分为核心库和dalvik虚拟机两部分 核心库:提供了java语言api再给你的大多数功能,同时也包含了Android的一些核心api,如Android.so,Android.net…… dalvik虚拟机 Android程序不同于jzme程序,每个Android应用程序都是有一个专门的进程,并且不是多个进程在一个虚拟机中,而是每个Android进程都有一个dalvik虚拟机实例,并在该实例中执行 dalvik是一种基于寄存器的java虚拟机,而不是传统的基于栈的虚拟机,并进行了内存资源使用优化以及支持多个虚拟机的特点 不同的jezm,Android程序在虚拟机中执行的并非编译后的字节码,而是通过dx转换工具将java字节码转化为dx格式的中间码。
第四层:linux内核层
Android是基于linux2.6内核,其核心系统服务如:安全性,内存管理,进程管理,网络协议以及驱动模块都依赖于linux内核
Android系统的四大组件
在Android中,一个应用程序可以使用其他应用程序的组件,在需要的时候Android系统会启动另外一个程序的部分代码,这部分代码实现了你请求执行的功能,而不是你应用程序中直接包含另外一个应用程序的代码。为了实现这样的功能,Android系统必须能够在其他应用程序请求的时候启动一个应用层进程并且实例化部分java对象,而这些Java对象被称为组件
组件包含以下四种类型
1、activity 2、service 3、broadcase receiver 4、content provider
响应程序请求的机制
系统收到请求时,系统先判断宿主进程是否运行,若没有运行,立即开启这个进程,当宿主进程运行,在判断组件是否可以使用,若不能立即使用,会创建个请求的组件的实例来响应请求。