如桌面 home,E-mail客户端,SMS/MMS短消息,日历,地图,浏览器,联系人程序等···
当然还包括我们自己用写的程序,,,或是使用java中的JNI技术配合android-NDK开发的应用程序
为开发人员提供了可以完全访问核心应用程序所使用的API框架。。。
Activity Manager 管理应用程序生命周期,,比如启动程序时需要的资源和退出程序时要释放资源。。。
Window Mangaer 管理所有开启的窗口程序。。。
Notification Mangaer 使应用程序可以在状态栏中显示我们要向用户发送的提示信息
Resource Manager 让我们的应用程序能够访问各种应用程序。。。。
Content Providers 使我们的应用程序的数据能够被其他应用程序的所访问,,,如联系人中的数据
Telephony Manager 电话拨打和接听
Location Manager 管理地图服务
Blutooth Service 蓝牙服务的相关功能
WIFI Service WIFI服务
USB Service USB服务
Sensor Service 手机传感器相关的服务
他们通过应用程序框架为我们提供服务,其中包含有:
Surface Manager 对显示系统进行管理,为多个应用程序提供了2D和3D的无缝融合。。
Media Framework 支持多种格式的音频和视频的回放和录制,同时支持静态图像文件。编码包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG
SQLite 对所有应用程序提供的轻量级的关系型数据库。。。
OpenGL ES 支持OpenGL ES1.X和OpenGL ES 2.0 ,使用硬件3D加速或者使用高度优化的3D软加速
SGL skia 底层2D图形引擎
FreeType 位图 bitmap 和 矢量 vector 字体显示
Webkit 功能完善的web浏览器引擎 支持可嵌入的web 试图
SSL 加密套接字协议层,安全通信相关技术
Libc google自己开发的Bionic Libc ,,从BSD继承了标准的C系统函数库,,专门为基于嵌入式Linux设备定制的
又分为核心库和 dalvik虚拟机,,核心库提供了java语言的大多数功能,主要通过JNI的方式向应用程序框架层提供底层的接口。。。
接下来就是dalvik虚拟机。。。
android 是 依赖于linux 2.6 版内核提供的系统服务,,,如安全,内存管理,进程管理,网络栈,驱动模块。。
android 并对他们进行了增强,,,主要有:
内存分配于共享
低内存管理器 low memory killer
kernel 调试 kernel debugger
android中的IPC机制 binder
电源管理 power management
时钟 alarm
android 启动时会首先
1,启动linux系统,,然后加载,,linux kernel 并启动初始化进程,,,
2,启动USB 守护进程(daemon) 管理USB,,,
启动 adb 守护进程 来管理adb连接,
启动debug 守护进程 来管理调试请求,,
启动无线接口 守护进程 管理无线通信。。。
同时还会启动 zygote 进程。。。
3,初始化一个dalvik虚拟机实例,,,装载socket请求所需的类和监听器。。。创建虚拟机实例来管理应用程序进程
4,接着需要初始化runtime进程,,,,进而初始化服务管理,,注册服务管理器,,以它作为默认 binder 服务的Context管理器
5,runtime进程初始化后,将会发送一个请求到 zygote ,,开始启动系统服务,,将会建立一个单独的虚拟机来运行系统服务。。
紧接系统服务会启动原生系统服务,主要包括surface flinger 和 audio flinger,,这些服务会注册到服务管理器,,service manager 来作为 IPC 服务的目标。。
6,android 会启动其他的管理服务,,如package manager,,activity manager.....等都会被注册到服务管理器中。。。
7,最后,系统加载完所有的服务之后会处于等待状态,,等待应用程序运行,,,然而每个应用程序都将启动一个单独的进程,也就是会有一个单独的dalvik 虚拟机实例。。
然后,,各进程进行交互就会用到 IPC 机制了。。