Android 系统架构
Android 系统由 5 部分组成, 分别为: 应用程序层, 应用程序框架层, 函数库, Android 运行时和 Linux 内核层.
Android 应用程序层: 该层包括 Android 系统的核心应用程序: 日历, 地图, 浏览器, 通讯录, Email 客户端等, 都是用 java 语言编写. Android 开发人员开发的 apk 应用程序就是运行在该层上.
应用程序框架: 应用程序框架提供了大量的 API, 这样的架构设计大大方便了开发人员, 开发人员可以查阅其接口文档, 使用其提供的各类组件. 应用程序可以通过接口在状态栏发布通知, 访问位置信息, 播放音视频等.
函数库: Android 包含一套被不同组件所使用的 C/C++ 库的集合. 一般来说, Android 开发者不能调用这些库, 但可以通过它上面的应用框架来调用这些函数库. 其核心库包括: 系统 C 库, 媒体库, Surface Manager,Lib web Core,Free Type,SQLite 等.
Android 运行时: 包括 Dalvik 虚拟机和 Android 核心库集两部分. Java 语言核心库可以使用核心库提供的大部分功能. 在 Dalvik 虚拟机上运行的. dex 文件需要通过 DX 工具生成, 首先把编写的 Java 源文件经过 Java 编译器生成. class 文件, 之后使用 DX 工具生成. dex 文件. 每个 Android 应用程序对应一个 Dalvik 虚拟机, 这样做的好处是, 一个应用程序崩溃时不会影响其他应用程序.
Linux 内核: Android 系统建立在 Linux 内核之上, 例如 Android6.0 就是基于 Linux3.18 内核的. 进程管理, 内存管理, 驱动模型, 网络协议栈和安全性等都是基于 Linux 内核提供的.
Android 四大组件
Android 基本四大组件包括: Activity,Service,BroadcastReceiver,ContentProvider.
Activity 组件: Android 中最常见的组件就是 Activity. 它负责与用户进行交互, 它就是应用程序中直接展示给用户的界面. 用户可以在该界面上进行点击, 滑动等操作. 如果该 Android 应用需要多个用户界面, 那么这个 Android 应用将包含多个 Activity, 多个 Activity 组成 Activity 栈, 当前活动的 Activity 处于栈顶, Android 提供了 Intent 机制实现界面之间的跳转.
Service 组件: Service 和 Activity 类似, 它也代表一个单独的 Android 组件, 与 Activity 的区别是, 它常常处于后台, 没有用户界面, 不需要与用户进行交互. Service 拥有自己独立的生命周期, 通常用于为其他组件提供后台服务或监控其他组件的运行状态.
BroadcastReceiver 组件: BroadcastReceiver 本质上是一种全局的监听器, 用于监听系统全局的广播消息, 同时也可实现不同组件之间的通信. 开发者可以实现自己的 BroadcastReceiver 组件, 用于监听广播消息, 例如当切换网络时会发送对应的广播, 开发者可以在自定义的 BroadcastReceiver 中做出需要的操作.
ContentProvider 组件: ContentProvider 是不同应用程序间进行数据交换的标准 API, 当一个应用程序需要将自己的数据给其他应用程序使用时, 该应用程序就可以通过提供 ContentProvider 来实现; 其他应用程序就可以通过 ContentResolver 来操作 ContentProvider 暴露的数据. Android 系统本身提供了大量的 ContentProvider, 例如联系人信息, 系统的多媒体信息等, 开发者在自己的程序中可通过 ContentResolver 来获取系统信息.
来源: http://www.jianshu.com/p/cd17035c9bcb