Android体系体系架构
1. Android系统架构 Android系统是Google公司开发的基于Linux内核的移动操作系统,主要用于智能手机和平板电脑等移动设备中,该系统使用分层思想进行设计,各层分工明确功能独立,降低了曾与层直接的耦合性。
图1 Android平台体系架构
Android平台体系架构如图1所示,其软件层次结构从上到下分为四层:应用程序层、应用程序框架层、系统库和Android运行时层和Linux内核层。
(1)应用程序层
应用程序层直接和用户进行交互,为用户提供服务,主要包含由Java语言编写的供用户使用的应用程序和系统后台运行的服务程序,如电话、短信息和邮件等。通常Android开发者使用Android Studio等开发工具自行开发的具有一定功能的应用,安装到手机后也运行在此层。
(2)应用程序框架层
该层为应用层程序的开发提供丰富的API,方便开发者快速开发满足某种需求的应用程序,是进行安卓应用开发的基础。开发者可以使用继承等复用方式使用该层提供的框架,从而开发私有的功能模块。
(3)系统库和Android运行时层
系统库多数是使用C/C++语言实现的,开发者不能直接调用它们,而是通过应用程序框架来调用,还可以通过JNI来调用,JNI是Android系统提供的连接Java和C/C++的桥梁。Android运行时环境的Dalvik虚拟机(Dalvik VM)不同于Java运行环境的Java虚拟机(JVM),JVM是基于栈的虚拟机,而Dalvik VM是基于寄存器的虚拟机,可以根据硬件实现更大优化,更适合移动设备。
(4)Linux内核层
Android系统是基于Linux内核的,提供了电源管理、进程管理、内存管理和驱动模型等核心功能,为软硬件之间的连接提供了桥梁。另外Android系统对Linux内核进行了扩展,使得其在移动设备上性能更佳。
2. Android组件
Android组件是进行Android应用程序开发必不可少的组成部分,Android系统提供了四种基本组件:窗口(Activity)组件、服务(Service)组件、广播接收者(Broadcast Reveiver)组件和内容提供者(Content Provider)组件
(1)Activity组件
该组件提供给用户一个可视化的窗口,一个Activity代表一个UI显示界面,在该组件内可以放置各种控件与用户进行交互,如按钮、文本框等。Activity有两种状态:活动状态和非活动状态,当前正在使用的Activity即呈现在用户眼前的界面是活动Activity。若一个程序包含多个Activity,则在程序运行过程中,Activity会在两个状态之间切换,同时可以通过Intent来传递数据实现不同Activity之间的跳转和通信。
(2)Service组件
该组件不提供可视化接口,即不能和用户进行交互,但通过该组件可以使程序运行在后台,完成不需要用户干预的功能或为其他应用提供服务,如音乐的后台播放等。Service既可以单独运行也可以依附在其他进程中运行,若要Service和其他应用进行数据交互,则必须通过Binder实现Android系统的进程间通信。
(3)Broadcast Receiver组件
该组件用来接收广播,可以是Android系统的广播如电量过低、短信提醒等,也可以是其他应用程序自定义的广播,用来实现跨应用的消息传递。该组件和Service—样,没有用户接口,但可以在广播接收者中启动一个Activity来响应广播消息。
(4)content Provider组件
该组件可以为其他应用程序提供数据,实现不同应用间的数据共享和交换。由于Android系统应用之间无法直接交换数据,因此应用可以封装对外分享的数据并使用Content Provider组件来表示其位置,其他应用不需要关心内部数据存储结构,只需要通过Content Provider组件的URI和相关数据访问方法来获取数据,统一了数据的访问方式。