是一个机器人,Android 3.0之后的标志改为蜂巢),最早是由安迪·罗宾(Andy Rubin)创办,随后在2007年的时候被Google公司的创始人佩奇并进行了收购,而后Google公司凭借着Android操作系统在智能手机上取得了巨大的成功。
Android系统本身就具有如下5个特点:
(1) 开放性。Android最早设计就是希望做一个标准化开放式的平台,Android完全是在Linux下开发的,这样就吸引了更多的移动终端厂商和越来越多的开发者加入到Android联盟中来。用户和应用的日益丰富使得Android平台会越来越成熟。
开放性对于Android的发展而言,有利于吸引开发厂商和消费者,而对消费者来而言,丰富的软件资源给他们带来了很大的益处,例如手机游戏软件。开放的平台会使竞争越来越激烈,但也正因为这样,消费者得以购买越来越多价美物廉的手机,这也是大部分消费者的追求。
(2) 平等性。在Android 开发平台的基础上各个应用程序不管是系统自带的,还是自主开发的都可以根据自己的喜好进行替换,例如:播放器,Android中本身都有播放器,但是不好用,我们可以自己开发,所有的应用程序都是平等的。
(3) 无界性。多个应用程序之间可以互相的访问,例如:ContentProvider,程序的信息都可以访问。
(4) 方便性。Android的应用开发技术使用的是Java开发技术,Android之所以发展的很好,主要是它使用了Java语言来开发,Java语言的语言风格和C、C++非常相似,就会有大量的C、C++的开发者流入Java开发的阵营,Java的开发者很多,吸引了更多应用软件的支持。
(5) 硬件的丰富性。硬件的丰富性与Android平台的开放性是相关的,各个生产商,如:三星、摩托罗拉、HTC及各个平板电脑公司等等,都会用Android开发,实际上,Android的开发救活了很多公司,但是它的发展同时是相当于把Symbian的地位取代了。
2.2 Android的体系结构
对于整个Android系统而言,它是建立在Linux操作系统之中的。在Android操作系统中,我们把Android的体系结构划分为四层:首先是应用层(Application),应用层包括联系方式、电话、浏览器等等,它提供的是一些应用软件;第二层是应用框架层(Application Framework),包括Activity管理、窗口管理、电话管理、包管理、资源管理等等,这些管理一部分支持类库程序的开发;第三层是(Libraries),当使用Android框架进行开发的时候,需要一些库的包的支持,而这些库的包很多都是依靠C或C++完成的,就相当于把C或C++包裹解读,在系统运行库层有个Android的运行机制(Android Runtime),这个运行机制中有个核心库包(Core Libraries)和一个虚拟机(Dalvik VM),这个虚拟机主要是运行在移动设备上的,对内存的使用效率很高,而且低速CPU上也能表现出非常好的效果;第四层也即是最底层的是Linux内核层(Linux Kernel),包括WIFI、蓝牙、键盘、USB设备等等。
而用户开发的时候都是围绕应用层开发的,底层的东西基本上是很少去改变的,因为如果改变了,用户开发了项目发布之后可能很多手机的移动设备不支持,不支持的话项目就白开发了。
Android体系结构图如图2.1所示。
图2.1 Android的体系结构
2.3 Android应用的构成
在进行Android软件开发中,开发者所开发的Android应用程序都是通过应用程序的框架来与Android的最底层进行交互的,所以在开发的过程中我们接触到最多的部分就是应用程序框架,在整个应用程序框架中有四个比较重要的组件:
(1)Activities(活动)
(2)Intent(意图)
(3)Services(服务)
(4)Content Provider(内容提供者)
2.3.1 Activity(活动)
Activity实际上表示的就是一个人机的交互程序,Activity主要用来存放各种显示控件,它也是Android的基本组成部分,Android项目都是使用Java语言来进行开发的,所以每一个继承了android.app.Activity的Java类都将成为一个Activity程序,而一个Android项目将由多个Activity程序所组成,而所有的显示组件都必须放在Activity上才可以进行显示,android.app.Activity类的继承结构如下:
java.lang.Object
android.content.Context
android.content.ContextWrapper
android.view.ContextThemeWrapper
android.app.Activity
2.3.2 Intent(意图)
在一个项目之中,是由很多个Activity程序组成的,要使多个Activity程序之间互相通讯,各个Activity相互之间的通讯就需要依靠Intent来完成的。Intent传送时,如果现在Receive需要在回传给Send数据的话,则就不能使用startActivity()方法,只能通过startActivityForResult()方法完成了,但是如果要想接收回传数据的话,则需要Activity常量的支持。通过Intent回传数据的操作流程如图2.2所示。
图2.2 Intent回传数据的操作流程
2.3.3 Service(服务)
在Android系统开发之中,Services是Android系统的一个重要的组成部分。如果现在某些程序需要中的部分操作是很消耗时间的,那么可以将这些程序定义在Service之中,这样就可以完成程序的后台运行(也可以在不显示界面的形式下运行),即:Services实际上就相当于是一个没有图形界面的Activity程序,而且当用户要执行某些操作需要进行跨进程访问的时候也可以使用Service来完成。Service组件是没有UI界面的,它主要的功能是在必要的时候为Activity程序提供支持,例如:手机中的Mp3播放软件,当回到桌面上的时候这些组件依然可以运行,实际上这些就属于Service的功能,在开发的过程中用户只需要继承自android.app.Service类就可以完成Service程序的开发,在Service之中也有自己的生命周期方法。
2.3.4 ContentProvider(内容提供者)
在Android当中,对每一个应用程序的数据都是采用私有的方式来操作的,无论这些数据进行的是文件保存还是数据库保存,外部应用程序是不能对它进行访问的。但是在很多情况下用户是需要在不同的应用程序之间进行数据交换的,所以,在Android中专门提供了一个ContentProvider类,此类的主要功能是将不同的应用程序的数据操作标准统一起来,按照Content Provider所制定这个标准,应用程序的数据就可以被外部所访问了。
ContentProvider在程序的操作中所提供的是一个操作的标准,所以如果用户要想依靠此标准进行数据操作时,就必须要使用到android.content.content Resolver类完成,而这个类中所给出的操作方法与ContentProvider是一一对应的, 当用户调用了Content Resolver类的方法时实际上就相当于调用了ContentProvider类中的对应方法。
2.4 IOS与Android的比较
iPhone与Android的目的都是竞争移动市场,这两者的竞争基本上不分太多的先后。IOS与Android平台比较如表2-1所示。
iPhone 的开发基本上都是在Apple Mac OS平台上开发,而Android基本上不局限与操作系统,因为Java平台就是如此的;iPhone的开放工具是Xcode,而Android的是Eclipse,Eclipse中需要加入ADT插件;iPhone的开发语言是Objective-C,Android的是Java;在兼容性方面,iPhone的兼容性高,封闭操作系统,由Apple制定,Android的兼容性比较低,Google提出了一个硬件标准,不同的厂商根据这个标准进行手机的研发,且厂商很多,Android最早开发是以免费的开源的操作系统为准,后来不开源了,是因为各个厂商根据自己不同的需求任意去修改自己的操作系统,就导致了版本的兼容性出现了问题,Google及时的发现问题并解决了,那么相信Android的生命力会更持久一
上一篇:
基于Android的人影作业控制数据传输软件设计
下一篇:
试论APP广告在手机中的应用