一、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的形式进行表示。