Android
品位化
安然架构
Android作为一个挪移
设施的平台,其软件
品位
构造包括了一个操作系统(OS),中间件(MiddleWare)和
利用程序(Application) 。依据Android的软件框图,其软件
品位
构造自下而上分为以下几个
品位:
操作系统层(OS)
各种库(Libraries)和Android 运行环境(RunTime)
利用程序框架(ApplicationFramework)
利用程序(Application)
以下
别离介绍Android各个
品位的软件的重点及其
有关技术:
(1)操作系统层(OS)
Android
使用Linux 2.6作为操作系统,Linux 2.6是一种
标准的技术,Linux也是一个开放的操作系统 。Android对操作系统的
使用包括核心和驱动程序两
部分,Android的Linux核心为
标准的Linux 2.6内核,Android更多的是需求一些与挪移
设施
有关的驱动程序 。重要的驱动如下所示:
显示驱动(DisplayDriver):常用基于Linux的帧缓冲(Frame Buffer)驱动
Flash内存驱动(FlashMemory Driver)
照相机驱动(CameraDriver):常用基于Linux的v4l(Video for)驱动 。
音频驱动(AudioDriver):常用基于A(Advanced Linux Sound Architecture,高级Linux声音体系)驱动
WiFi驱动(CameraDriver):基于IEEE 802.11
标准的驱动程序
键盘驱动(KeyBoardDriver)
蓝牙驱动(BluetoothDriver)
BinderIPC驱动:Andoid一个特别的驱动程序,
存在
径自的
设施节点,提供
历程间通信的
性能 。
PowerManagement(能源治理)
( 2)各种库(Libraries)和Android 运行环境(RunTime)
本
品位对应普通嵌入式系统,相当于中间件
品位 。Android的本
品位分成两个
部分一个是各种库,另一个是Android 运行环境 。本层的内容大多是
使用C++实现的 。 在其中,各种库包括:
C库:的
标准库,这也是系统中一个最为底层的库,C库是通过Linux的系统调用来实现 。
多媒体框架(MediaFrameword):这
部分内容是Android多媒体的核心
部分,基于PacketVideo(即PV)的OpenCORE,从
性能上本库一共分为两大
部分,一个
部分是音频、视频的回放(PlayBack),另一
部分是则是音视频的纪录(Recorder) 。
SGL:2D图像引擎 。
SSL:即SecureSocket Layer位于TCP/IP
协定与各种
利用层
协定中间,为数据通信提供
安然
支撑 。
OpenGL ES 1.0 :本
部分提供了对3D的
支撑 。
界面治理工具(Surface Management):本
部分提供了对治理显示子系统等
性能 。
SQLite:一个通用的嵌入式数据库
WebKit:网络阅读器的核心
FreeType:位图和矢量字体的
性能 。
Android 的各种库普通是以系统中间件的
模式提供的,它们均有的一个卓著特色便是与挪移
设施的平台的
利用紧密
有关 。 Android 运行环境重要指的
虚构机技术——Dalvik 。Dalvik
虚构机和普通Java
虚构机(Java VM)不同,它执行的不是Java
标准的字节码(bytecode )而是Dalvik可执行
格局(.dex)中执行文件 。在执行的过程中,每一个
利用程序即一个
历程(Linux的一个Process) 。 二者最大的区别在于Java VM是以基于栈的
虚构机(Stack-based),而Dalvik是基于
存放器的
虚构机(Register-based) 。显然,后者最大的
好处在于
可以依据硬件实现更大的优化,这更
合适挪移
设施的特色 。
(3)
利用程序框架(ApplicationFramework)
Android的
利用程序框架为
利用程序层的开发者提供APIs,它实际上是一个
利用程序的框架 。由于上层的
利用程序是以JAVA构建的,
因此本
品位提供的首先包括了UI程序中所需求的各种控件:例如: Views (视图组件)包括 lists(列表), grids(栅格), textboxes(文本框), buttons(按钮)等,甚至一个嵌入式的Web阅读器 。一个Android的
利用程序
可以利用
利用程序框架中的以下几个
部分: Activity(
运动)、Broadcast IntentReceiver (
播送
用意
接纳者)、Service (服务)、Content Provider (内容提供者) 。
(4)
利用程序(Application)
Android的
利用程序重要是消费者界面(UserInterface),通常以JAVA程序编写,其中还
可以包括各种资源文件(
搁置在res目录中) 。JAVA程序及
有关资源
通过编译后,将生成一个APK包 。Android
本身提供了主屏幕(Home),
联络人(Contact),电话(Phone),阅读器(Browsers)等众多的核心
利用 。同时
利用程序的开发者还
可以
使用
利用程序框架层的API实现自己的程序 。
图1 Android分层
安然架构图
Android的组件模型(ComponentModel)
Android系统中包括如下4种组件:
(1)Activity
Activity便是一个界面,这个界面里面
可以
搁置各种控件 。例如:TaskManager的界面、Root Explorer的界面等;Activity是为消费者操作而
展示的可视化消费者界面 。例如说,一个activity
可以
展示一个菜单项列表供消费者
取舍,或者显示一些包括
注明的照片 。一个短
信息
利用程序
可以包括一个用于显示做为发送对象的
联络人的列表的activity,一个给选定的
联络人写短信的activity以及翻阅以往的短信和转变设置的activity 。
只管它们一同组成了一个内聚的消费者界面,但其中每个activity都与其它的
维持独立 。每个都是以Activity类为基类的子类实现 。
一个
利用程序
可以惟独一个activity,或者,如
方才提到的短信
利用程序那样,包括众多个 。而每个activity的作用以及其数目,自然取决于
利用程序及其设计 。普通状况下,总有一个
利用程序被标记为消费者在
利用程序启动的时候第一个看到的 。从一个activity转向另一个的
模式是靠目前的activity启动下一个 。
每个activity都被赋予一个默许的窗口以进行绘制 。普通状况下,这个窗口是满屏的,但它也
可以是一个小的位于其它窗口之上的浮动窗口 。一个activity也
可以
使用超过一个的窗口 。例如,在activity运行过程中弹出的一个供消费者
反响的小对话框,或是当消费者
取舍了屏幕上特定
名目后显示的必要信息 。
窗口显示的可视内容是由一系列视图组成的,这些视图均继承自View 基类 。每个视图均操纵着窗口中一块特定的矩形空间 。父级视图包括并组织它子视图的布局 。叶节点视图(位于视图
品位最底端)在它们操纵的矩形中进行绘制,并对消费者对其直接操作做出响应 。所以,视图是activity与消费者进行交互的界面 。例如说,视图
可以显示一个小图片,并在消费者
指导它的时候产
活泼作 。Android有众多既定的视图供消费者直接
使用,包括按钮、文本域、卷轴、菜单项、复选框等等 。
(2)Service
服务是运行在
后盾的
性能模块 。如文件下载、音乐播放程序等;服务没有可视化的消费者界面,而是在一段
工夫内在
后盾运行 。例如说,一个服务
可以在消费者做其它
事件的时候在
后盾播放背景音乐、从网络上猎取一些数据或者计算一些东西并提供应需求这个运算
后果的activity
使用 。每个服务都继承自Service基类 。
一个媒体播放器播放播放列表中的曲目是一个不错的例子 。播放器
利用程序可能有一个或多个activity来给消费者
取舍歌曲并进行播放 。但是,音乐播放这个
使命
本身不应该为任何activity所
解决,由于消费者
期冀在他们离开播放器
利用程序而开始做别的
事件时,音乐仍在
接续播放 。为达到这个
目标,媒体播放器activity应该启用一个运行于
后盾的服务 。而系统将在这个activity不再显示于屏幕之后,仍维持音乐播放服务的运行 。
可以衔接至(绑定)一个正在运行的服务(假如服务没有运行,则启动之) 。衔接之后,
可以通过那个服务
袒露出来的接口与服务进行通信 。关于音乐服务来说,这个接口
可以同意消费者暂停、回退、
停留以及再一次开始播放 。
(3)ContentProvider
它是Android平台
利用程序间数据共享的一种
标准接口,它以
类似于URI(UniversalResources Identification)的
模式来
示意数据,如:content://contacts/people/1101;内容提供者将一些特定的
利用程序数据供应其它
利用程序
使用 。数据
可以存储于文件系统、SQLite数据库或其它
模式 。内容提供者继承于ContentProvider 基类,为其它
利用程序取用和存储它治理的数据实现了一套
标准
步骤 。但是,
利用程序并不直接调用这些
步骤,而是
使用一个ContentResolver 对象,调用它的
步骤作为
代替 。ContentResolver
可以与任意内容提供者进行会话,与其合作来对全部
有关交互通信进行治理 。
(4)BroadcastReceiver
Broadcast Receiver是一个
专一于
接纳
播送
告诉信息,并做出对应
解决的组件 。众多
播送是源自于系统代码的 。例如,
告诉时区转变、电池电量低、拍摄了一张照片或者消费者转变了语言选项 。
利用程序也
可以进行
播送,例如
告诉其它
利用程序一些数据下载
实现并处于可用状态 。
利用程序
可以
占有任意数量的Broadcast Receiver以对全部它有兴趣的
告诉信息予以响应 。全部的
接纳器均继承自BroadcastReceiver基类 。Broadcast Receiver没有消费者界面 。但是,它们
可以启动一个activity来响应它们收到的信息,或者用NotificationManager来
告诉消费者 。
告诉
可以用众多种
模式来吸
援消费者的
留神力──闪动背灯、
震撼、播放声音等等 。普通来说是在状态栏上放一个
长久的图标,消费者
可以
打开它并猎
取缔息 。
与此组件
有关的概念是Intent,Intent是一个对动作和行为的
形象
形容,负责组件中间程序中间进行
信息传递 。而BroadcastReceiver组件则提供了一种把Intent作为一个
信息
播送出去,由全部对其有兴趣的程序对其作出
反响的机制 。举个
方便的例子,为了实现一个系统启动后播放音乐的
性能,则
可以定义Intent为android.intent.action.BOOT_COMPLETED,由BroadcastReceiver组件将其进行
播送,而系统中的Media Player
接纳到该信息后则进行播放 。
如上所述,4个组件中间的关系如下图:
图2 Android各组件关系图