一、Android操作系统总体框架

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

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

图1Android架构

从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)IntentReceiver

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

(3)Service

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

(4)ContentProvider

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



实际用到的如下图所示:



更多相关文章

  1. Android的应用程序结构分析:HelloActivity
  2. Android应用程序上传错误The package name of your apk may not
  3. Android* 操作系统上的应用程序远程调试
  4. Android Step by Step (1)——第一个Android程序"Helllo Android
  5. 基本组件之列表视图
  6. Android studio中相对布局组件排列方式
  7. android----UI组件
  8. Android 程序启动界面Demo
  9. android中获取当前程序路径

随机推荐

  1. android学习六(android中四种基本布局)
  2. 在Android模拟器中安装和卸载apk应用
  3. Android开发学习笔记之 获得Android(安卓
  4. Android中的蓝牙Bluetooth应用开发基础
  5. Android中SQLite应用详解
  6. Android学习笔记(一)――Android应用的界面
  7. Android(安卓)进程间通信——AIDL
  8. Android应用程序与SurfaceFlinger服务的
  9. android view滑动助手类OverScroller
  10. Android(安卓)之 AsyncTask 异步任务