第一章:Android概述

来源:互联网 发布:1 1 2 3 5算法 编辑:程序博客网 时间:2024/06/05 10:47

一、Android的平台架构及特性:

Android平台采用了整合的策略思想,包括底层Linux操作系统、中间层的中间件和上层的Java应用程序。

Android有如下平台特性:

  • 应用程序框架支持组件的重用和替换。这意味着我们可以把系统中不喜欢的应用程序替换掉,安装我们自己喜欢的应用程序。
  • Dalvik虚拟机专门为移动设备做了优化。Android应用程序将由Java编写、编译的类文件通过DX工具转换成一种后缀名为.dex的文件来执行。Dalvik虚拟机是基于寄存器的,相对于Java虚拟机速度要快的很多。
  • 内部继承浏览器基于开源的WebKit引擎。有了内置的浏览器,这将意味着WAP应用的时代即将结束,真正的移动互联网时代已经来临,手机就是一台小电脑,可以在晚上随意遨游
  • 优化的图形库包括2D和3D图形库。
  • SQLite用作结构化的数据存储。
  • 多媒体支持包括常见的音频、视频和静态印象文件格式。如MPEG4、MP3、AAC、JPG、PNG、GIF。
  • GSM电话(依赖于硬件)。
  • 蓝牙、3G、WiFi、EDGE
  • 照相机、GPS、指南针和加速度计。
  • 丰富的开发环境包括设备模拟器、调试工具、内存及性能分析图表和Eclipse集成开发环境插件。

二、Android平台架构

1、应用程序

Android连同一个核心应用程序包一起发布,该应用程序包包括E-mail客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。所有的应用程序都是用Java编写的。

2、应用程序框架

以下所有的应用程序都由一些列的服务和系统组成,包括:

  • 一个可扩展的视图(Views)可以用来创建应用程序,包括列表(lists)、网格(grids)、文本框(text boxes)、按钮(button),甚至是一个可嵌入的Web浏览器。
  • 内容管理器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库)或者共享他们自己的数据。
  • 一个资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串、图形和分层文件。
  • 一个通知管理器(Notification Manager)使得应用程序可以在状态栏中显示客户通知信息。
  • 一个活动类管理器(Activity Manager)用来管理应用程序生命周期并提供常用的导航回退功能。

3、Android程序库

Android包括一个被Android系统中各种不同组件所使用的C/C++库集。该库通过Android应用程序为开发者提供服务。以下是一些主要的核心库:

  • 系统C库:一个从BSD继承来的标准C系统函数库(libc),专门为基于Embedded Linux的设备定制。
  • 媒体库:基于PacketVideo OpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态映像文件包括MPEG4、H.26、MP3、AAC、JPG、PNG。
  • Surface Manager:对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。
  • LibWebCore:一个最新的Web浏览器引擎,用来支持Android浏览器和一个可嵌入的Web视图。
  • SGL:一个内置的2D图形引擎。
  • 3D Libraries:基于OpenGL ES 1.0 APIs实现;该库可以使用硬件3D加速(如果可用)或者使用高度优化的3D软加速。
  • FreeType:位图(bitmap)和向量(vector)字体显示。
  • SQLite:一个对于所有应用程序可用、功能强劲的轻型关系型数据库引擎。

4、Android运行库

Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。

每一个Android应用程序都在它自己的进程中进行,都拥有一个独立的Dalvik虚拟机实例。Dalvik是针对同时高效的运行多个VMs来实现的。Dalvik虚拟机执行.dex的Dalvik可执行文件,该格式文件针对最小内存使用做了优化。该虚拟机是基于寄存器的,所有的类都经由Java汇编器编译,然后通过SDK中的DX工具转化成.dex格式由虚拟机执行。

Dalvik虚拟机依赖于Linux的一些功能,比如线程机制和底层内存管理机制。

5、Linux内核

Android的核心系统服务依赖于Linux2.6内核,如安全性、内存管理、进程管理、网络协议和驱动模型。Linux内核也同时作为硬件和软件堆栈之间的硬件抽象层。

三、Android应用程序组件

Android应用程序没有统一的入口(例如main()方法),各个应用程序之间是相互独立的,并且运行在自己的进程当中。根据完成的功能不通,Android划分了四个核心的组件类:Activity、Service、Broadcast Receiver、ContentProvider。相同组件和不同组件之间的导航通过Intent来完成。Android还定义了View类来显示可视化界面,例如菜单、对话框、下拉列表等。

  1. Activity:Activity是Android组件中最基本也是最为常用的一种组件,在一个Android应用中,一个Activity通常就是一个单独的屏幕。每一个Activity都被实现为一个独立的类,并且继承于Activity这个基类。这个Activity类将会显示由几个Views控件组成的用户接口,并对事件做出响应。大部分的应用都会包含多个屏幕。例如,一个短消息应用程序将会有一个屏幕显示联系人列表,第二个屏幕用于写短消息,同时还会有用于浏览旧短消息及进行系统设置的屏幕。每一个这样的屏幕就是一个Activity。
  2. Service:一个Service是一种长生命周期的、没有用户界面的程序。比较好的一个例子就是正在从播放列表中播放歌曲的媒体播放器。在一个媒体播放器的应用中,应该会有多个Activity,让使用者可以选择歌曲并播放歌曲。然而,音乐重放这个功能并没有对应的Activity,因为使用会认为在导航到其他屏幕时音乐应该还在播放。在这个例子中,媒体播放器这个Activity会使用Context.startService()来启动一个Service,从而可以在后台保持以音乐的播放。同时,系统也将保持这个Service一直执行,直到这个Service运行结束。另外,我们还可以通过使用Context.bindService()方法连接到一个Service上(如果这个Service还没运行则将启动它)。当连接到一个Service之后,我们还可以通过Service提供的接口与它进行通信。拿媒体播放器这个例子来说,我们还可以进行暂停、重播等操作。
  3. Broadcast Receiver:是为了提供系统广播而实现的一种组件。例如,我们可以发出一种广播来检测手机电量的变化。
  4. ContentProvider:实现不通组件之间数据的共享。
  5. View:是Android中图形用户界面的基类,提供了可视化界面的展示。Android的图形界面可以分为三层:底层是Activity;Activity上面是Window;Window上面是Views。View又可以分为View和ViewGroup。View是指基本的控件,例如按钮、单选框、多选框、菜单等;ViewGroup是指布局控件,即用来控制界面中的控件是如何布局摆放的。
  6. Intent:是不同组件之间相互导航的纽带,封装了不同组件之间导航查找的条件。在Intent的描述结构中,有两个最重要的部分:动作和动作对应的数据。典型的动作类型有MAIN(Activity门户)、VIEW、PICK、EDIT等。而动作对应的数据则以URI的形势进行表示。例如要查看一个人的联系方式,你需要创建一个动作类型为VIEw的Intent以及一个表示这个人的URI。
原创粉丝点击