图2-1 Android系统架构
从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和Linux内核层。
(1)应用程序层
Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。
(2)应用程序框架层
开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。
(3)系统运行库层
系统运行库层包括程序库和Android运行库。程序库包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务;Android运行库包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。
(4)Linux内核层
Android 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。
2.1.2 Android流行的原因与优势
作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。
Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。
2011年11月谷歌对Android Market上的应用程序进行了大清理,据统计,此次共清理了约18万个应用程序,包括流氓应用、病毒软件、侵犯版权、低质量和滥竽充数的各种程序,谷歌将这一系列应用删除后,使得Android市场中的优质应用程序总数到31.5万。
2011年11月20日,谷歌宣布启动了Android Market应用审核、取缔、清扫行为,定期对电子市场上存在的不合格、低质量、违法恶意的应用程序进行清理。
2.2 Eclipse开发工具
Eclipse是一款非常优秀的开源IDE(集成开发环境),基于Java的可扩展开发平台。除了可以作为Java的集成开发环境外,还可以作为编写其他语言(如C++和Ruby)的集成开发环境,Eclipse凭借其灵活的扩展能力、优良的性能与插件技术,受到了越来越多开发者的喜爱。 2.2.1 Eclipse的体系结构
Eclipse类似于“软总线”的体系结构,Eclipse的核心部分(Platform Runtime)类似于一条“即插即用”的“总线”,它提供了许多的“插槽(扩展点:extension point)”。其余的部分都可看成类似于外部设备的“插件(Plug-in)”,可随时加载和卸载。
可以说,在 Eclipse 平台中,几乎一切都是插件。从架构上来讲,Eclipse基本采用的是“内核+核心插件+定制插件”的结构体系,除了内核部分外,其余部分均为插件,其体系结构如图 2-2所示。
图2-2 Eclipse的体系结构
2.2.2 Eclipse平台的优势
(1)Eclipse 是开放源代码的软件。这意味着Eclipse不仅可以免费使用,还可以通过研究源代码学习世界上顶尖开发人员的编程技术,并可以共享遍布全球的开发人员所贡献的公共开放源代码库。
(2)Eclipse是真正可扩展并可配置的。Eclipse采用插件机制,犹如一个花瓶,你可以随时向花瓶里面插花,也可以很容易将不再需要的花取出。
(3)Eclipse可以在多重平台上提供一致的特性集。
(4)Eclipse支持众多的开发语言而不仅仅是Java。Eclipse只是给开发人员提供了一个能够扩展系统功能的最小核心,基于扩展点的插件体系结构使得Eclipse支持多种语言成为可能。
(5)Eclipse由业界领先者推出,具有强大的行业力量。
2.3 Android SDK介绍
SDK(software development kit)是指软件开发工具包。被软件开发工程师用于为特定的软件包、软件框架、硬件平台、操作系统等建立应用软件的开发工具的集合。
顾名思义,Android SDK就是指Android专属的软件开发工具包。这个工具包不仅包括了Android模拟器和用于Eclipse的Android开发工具插件(ADT),而且包括了各种用来调试、打包和在模拟器上安装应用的工具。
Android SDK主要是以Java语言为基础,用户可以使用Java语言来开发Android平台上的软件应用。通过SDK提供的一些工具将其打包成Android平台使用的apk文件,然后用SDK中的模拟器(Emulator)来模拟和测试软件在Android平台上运行情况和效果。
2.4 SQLite数据库
Android系统提供了多种数据存储方式,有SQLite数据库存储方式、文件存储方式、XML文件的SharedPreference存储方式等。本系统采用的是SQLite数据库存储方式,所以对其他的存储方式不展开说明。
SQLite数据库是一个关系型数据库,因为它很小,引擎本身只有一个大小不到300k的文件,所以常作为嵌入式数据库内嵌在应用程序中。SQLite生成的数据库文件时一个普通的磁盘文件,可以放在任何目录下。SQLite是用C语言开发的,开放源代码,支持跨平台,最大支持2048GB数据,并且被所有主流编程语言支持。可以说,SQLite是一个非常优秀的嵌入式数据库。
2.5 Android之MVC开发模式
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑和数据显式分离的方法组织代码,将业务逻辑被聚集到一个部件里面,在界面和用户围绕数据的交互能被改进和个性化定制的同时而不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
2.5.1 Android开发中使用MVC模式的好处
从用户的角度出发,用户可以根据自己的需求,选择自己合适的浏览数据的方式。比如说,对于一篇在线文档,用户可以选择以HTML网页的方式阅读,也可以选择以PDF的方式阅读。从开发者的角度,MVC把应用程序的逻辑层与界面是完全分开的,最大的好处是:界面设计人员可以直接参与到界面开发,程序员就可以把精力放在逻辑层上。而不是像以前那样,设计人员把所有的材料交给开发人员,由开发人员来实现界面。在Eclipse工具中开发Android采用了更
加简单的方法,设计人员在DroidDraw中设计界面,以XML方式保存,在Eclipse中直接打开就可以看到设计人员设计的界面。 2.5.2 MVC架构模型
MVC架构模型如图所示:
图2-3 MVC架构模型
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分,通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分,通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分,通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。 2.5.3 MVC开发模式在Android开发中的应用
Android中界面部分也采用了当前比较流行的MVC框架。Android的界面直接采用XML文件保存的,界面开发变的很方便。在Android中控制器也是很简单的,一个Activity可以有多个界面,只需要将视图的ID传递到setContentView(),就指定了以哪个视图模型显示数据。
在Android SDK中的数据绑定,也都是采用了与MVC框架类似的方法来显示数据。在控制层上将数据按照视图模型的要求封装就可以直接在视图模型上显示了,从而实现了数据绑定。比如显示Cursor中所有数据的ListActivity,其视