一、Android是什么
Android是机器人的意思,是Google公司2007年11月5日发布的一个机遇Linux平台的开源的手机操作系统。该系统由底层的Linux操作系统、中间件和核心应用程序组成。Android应用程序由Java语言来编写,也支持一些其他语言,如C、Perl等。
1、Android产生
Android一开始并不是Google自己研发的产品,而是收购的一家刚刚创业22个月的公司的产品。
Google于2007 年11 月5 日发布了Android1.0操作系统。
同日,Google与其他33家手机制造商组成了一个全球性的联盟组织——开放手持设备联盟(Open Handset Alliance)。参与该联盟的这些厂商,都会基于Android 平台,来开发新的手机业务。
2、Android的发展
Android经推出后,版本升级非常快,几乎每隔半年就有一个新版本发布。
二、Android的平台架构及特性
Android平台采用了整合的策略思想,包括底层Linux操作系统、中间层的中间件和上层的Java应用程序。
1、Android平台特性
- 应用程序框架支持组件的重用与替换。这意味着,我们可以把系统中不喜欢的应用程序替换掉,安装我们自己喜欢的。
- Dalvik虚拟机专门为了移动设备做了优化。Android应用程序将由java编写编译的类文件通过DX工具转换成一种后缀名为.dex的文件来执行。Dalvik虚拟机是基于寄存器的,相对于java虚拟机要快很多。
- 内部集成浏览器基于开源的Webkit引擎。有了内置浏览器,意味着WAP应用时代即将结束,真正的移动互联时代已经来临。
- 优化的图形库包括2D和3D图形库,3D图形库基于OpenGL ES 1.0。强大的图形库给游戏开发带来了福音。
- SQLite用作结构化的数据存储。
- 多媒体支持包括常见的音频、视频和静态印象文件格式。
- GSM电话
- 蓝牙、EDGE、3G、WiFi
- 照相机、GPS、指南针和加速度计
- 丰富飞开发环境包括设备模拟器、调试工具、内存及性能分析图表和Eclipse集成开发环境插件。 (1)Android应用程序层
Android连同一个核心应用程序包一起发布,该程序包包括E-mail客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。所有程序均为Java编写。
(2)Android应用程序框架
开发者完全可以访问核心应用程序所使用的API框架。该应用程序架构用来简化组件软件重用。任何一个应用程序都可以发布它的功能块,并且任何其他程序都可以使用其所发布的功能块(不过得遵守框架的安全性限制)。该应用程序重用机制使得组件可以被用户替换。
所有应用程序都由一系列的服务和系统组成,包括:
1)一个可扩展的视图(Views)
可以用来创建应用程序,包括列表lists,网格grids,文本框text boxes,按钮button,甚至可以是一个可嵌入的web浏览器。
2)内容管理器(Content Providers)
使得程序可以访问另一个程序的数据,或者共享他们自己的数据。
3)一个资源管理器(Resource Manager)
提供非代码资源的访问,如本地字符串、图形和分层文件(Layout files)。
4)一个通知管理器(Notification Manager)
使得应用程序可以在状态栏显示客户通知消息。
5)一个活动类管理器(Activity Manager)
用来管理应用程序生命周期,并提供常用的回退导航功能。
(3) Android程序库
Android包括一个被android系统中各种不同组件所使用的C++库集。该库通过android应用程序框架为开发者提供服务。以下是一些主要的核心库:
1)系统C库
一个从BSD继承来的标准C系统函数库(libc),专门为基于Embedded Linux的设备定制。
2)媒体库
基于PacketVideo OpenCORE;该库支持录放,并且可以录制许多流行的音频视频格式,还有静态印象文件包括MPEG4、H.246、MP3、AAC、AMR、JPG、PNG。
3)Surface Manager
对显示子系统的管理,并且为多个应用程序提供2D和3D图层的无缝融合。
4)LibWebCore
一个最新的Web浏览器引擎,用来支持android浏览器和一个可嵌入的Web视图。
5)SGL
一个内置的2D图形引擎。
6)3D libraries
基于OpenGL ES 1.0APIs实现;该库可以使用3D硬件加速(如果可用),或者使用高度优化的3D软件加速。
7)FreeType
位图和向量字体显示。
8)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 Market
2008年8月28日,Google宣布推出Android Market。用户可以从这里购买或免费使用Android应用,开发人员可以将自己的应用发布到Android Market。
- 四、Android应用程序组件
Android应用程序没有统一的入口(如main()方法),各个应用之间是互相独立的,并且运行在自己的进程当中。根据完成的功能不同,Android划分了四类核心组件类:Activity、Service、Broadcast Receiver和Content Provider。相同组件和不同组件之间的导航通过Intent来完成。Android还定义了View类来显示可视化界面。
1、Activity
安卓中最基本也最为常用的组件,在一个安卓应用中,一个activity通常就是一个单独的屏幕。每个activity被实现为一个独立的类,并且继承于Activity这个基类。这个Activity将会显示由几个Views控件组成的用户接口,并对事件作出响应。大部分应用都会包含多个屏幕,每一个屏幕就是一个Activity。
通过调用startActivity()方法可以从一个屏幕导航到另一个屏幕,打开Activity的条件被封装在Intent中。
当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历史堆栈中。用户可以返回到历史堆栈中的前一个屏幕。当屏幕不再使用的时候,还可以从历史堆栈中删除。默认情况下,android将会保留从主屏幕到每一个应用的运行屏幕。
2、Service
一个Service是一种长生命周期的、没有用户界面的程序。我们可以通过使用Context.bindService()方法连接到一个Service上(如果这个Service还没有运行,则将启动它)。当连接到一个Service之后,我们还可以通过Service提供的接口与它进行通信。
3、Broadcast Receiver
为了实现系统广播而提供的一种组件。例如,检测手机电量变化。
4、View
View是android图形界面的基类,提供了可视化界面的展示。
Android的图形界面分为三层:底层是Activity、activity上面是Window、Window上面是Views。
View又可分为View和ViewGroup。
View是指基本的控件,例如按钮、单选框、复选框、菜单等;ViewGroup是指布局控件,即用来控制界面中的控件是如何摆放的。
5、Intent
Intent是不同组件之间导航的纽带,封转了不同组件之间导航查找的条件。在Intent的描述结构中,有两个最重要的部分:动作和动作对应的数据。典型的动作类型有MAIN(Activity的门户)、VIEW、PICK、EDIT等。而动作对应的数据则以URI的形式进行表示。