四极管:Android操作系统的结构

来源:互联网 发布:天猫东西好还是淘宝好 编辑:程序博客网 时间:2024/05/29 03:29

一、Android操作系统总体框架

Android平台采用了分层的体系结构,如图1所示:Android从上到下分为5个部分,分别是:应用程序(Application)、应用程序框架(Application Framework)、程序库(Libraries)、Android运行环境(Android Runtime)、Linux核心层(Linux Kernel) 。

(1)应用程序层

Android发布时本身已附带一些核心的应用程序,比如短信程序、E-mail客户端、日历、浏览器、地图、通讯录等,这些应用程序都是用Java语言来开发的。

(2)应用框架层

Android应用程序基于程序框架和组件进行开发,因此,开发人员同核心应用一样拥有访问框架APIS的全部权限。程序的结构化设计大大简化了各组件和之间的重用,任何应用程序都可以分发自己的组件,也可以使用其他程序分发的组件。

(3)Android运行时库和其他库层

Android运行时库包含一组核心库,它提供了Java语言核心库内的大部分功能。每一个Android应用程序拥有一个独立的Dalvik虚拟机实例,在自己的进程中运行。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统的虚拟机。它执行.dex格式的可执行文件,该文件对小内存的使用做了优化。Dalvik虚拟机基于寄存器,开发的类由Java编译器编译,然后用SDK中的“dx”工具将其转化成.dex文件并在虚拟机中执行。

Android包含一些C/C++库,这些库提供给系统中不同组件使用,并通过Android应用程序框架为开发者提供服务。同时Android提供了大量的库类支持,且大部分开源,如采用的嵌入式数据库为SQLite。它具有以下优点:无需安装管理配置,储存在单一磁盘文件中,体积小只有250KB但支持数据库大小至2TB,提供了对事务功能和并发处理的支持,运行速度比目前流行的大多数数据库快。

(4)Linux内核层

Android的核心系统服务基于Linux version 2.6内核,该层用来提供系统的底层服务,如内存管理、安全性、网络协议栈、进程管理及一系列的驱动模型。该层位于硬件与其他的软件层之间,作为一个虚拟的中间层。作为新一代智能手机平台,Android需要支持超大容量的Nand Flash,因此采用支持大页面的YAFFS2文件系统。

图1 Android架构

从Android的整体结构上看,Android与其他平台相比显示出了自身的优点,如集成了SQLite数据库、Webkit浏览器等模块。

二、Android工作机制

Android上的应用程序通常包含这几个部分:Views、Intents、Activity、Permissions、ResourcesType、Services、Notifications、ContentProviders以及XML支持[20]。常用且比较重要的组件有:活动(Activity)、服务(Service)、接收器(Reciever)和内容提供者(ContentProvider)。但是并不是每个程序都要求有这四个组件,可能只使用了其中的一部分。使用的组件必须在一个叫做AndroidManifest.xml的项目配置文件中列出。这个配置文件用来定义应用程序的组件及其功能。下面重点介绍这四个组件:

(1)Activity

活动是最常用的 Android 应用程序形式。大部分程序会包含多个活动,它们以类的方式实现,与应用程序中的屏幕形成一一对应关系。每个Activity通常都对应一个显示界面,其界面内嵌一组视图类控件,并通过这些控件与用户进行交流。视图类实现各种UI元素,如文本框、标签、按钮等。

多个应用程序通过调用startSubActivity()或startActivity()函数从一个活动切换到另一个活动。如果只需切换到一个新的活动,使用函数startActivity();如果需要异步的调用,则使用startSubActivity()。但均需将参数传递给Intent。Intent是Android体系结构中一种新颖的设计元素,应用程序通过它发出相应的请求。

(2)Intent Receiver

要使应用程序响应外部的事件,需为程序定义一个Intent Receiver。Intent Receiver既可以在AndroidManifest.xml中注册,也可以直接在代码中使用函数Context.registerReceiver()来进行注册。当一个Intent Receiver被触发后,系统会通知相应的应用程序,然后应用程序通过Context.broadcastIntent()将它的Intent Receiver发送给其他应用程序。

(3)Service

与其他多任务计算机相似,Android 可以“在后台”运行一些应用程序。 Android 称这种应用程序为“服务”,服务是没有用户接口的Android应用程序。应用程序通过Context.bindService()方法连接到一个service,并借助service的接口与之通信。

(4)ContentProvider 

ContentProvider是Android 的数据存储抽象机制,用于实现不同应用之间的数据共享管理。它提供了一套标准的访问接口,以便其他应用程序对文件、数据库进行访问。



实际用到的如下图所示:



原创粉丝点击