Android的架构与应用开发研究资料下载.pdf
《Android的架构与应用开发研究资料下载.pdf》由会员分享,可在线阅读,更多相关《Android的架构与应用开发研究资料下载.pdf(12页珍藏版)》请在冰豆网上搜索。
1Android平台的架构Android平台自底向上由以下四个层次组成:
Unux内核层、Android运行时库和其他库层、应用框架层、应用程序层。
如图1所示图1Android平台的结构
(1)Unux内核层:
Android基于Unuxversion2623内核来开发的,主要是添加了一个名为Goldfish的虚拟CPU以及Android运行所需的特定驱动代码。
该层用来提供系统的底层服务,包括安全机制、内存管理、进程管理、网络堆栈及一系列的驱动模块。
作为一个虚拟的中间层,该层位于硬件与其它的软件层之间。
需要注意的是,这个内核操作系统并非类GNULinux的,所以其系统库、系统初始化和编程接口都和标准的Linux系统有所不同的。
它没有采用虚拟内存文件系统,而是采用YAFFS2文件系统。
YAFFS(YetAnotherFlashRleSystem)文件系统是一个开源的,专门为NANDFlash设计的文件系统,具有很好的可移植性,也是一种日志型文件系统,能够在Unux,uCLinux,和WindowsCE上运行。
YAFFS目前有YAFFS和YAFFS2两个版本,一般说来,YAFF5对小页面(528字节页)有很好的支持,而更大的页面(2K+64字节页)就需要YAFFS2了1。
作为新一代智能手机平台,Android需要支持超大容量的NANDFIaSh,所以采用支持大页面的YAFFS2文件系统。
(2)Android运行时库和其他库层:
Android运行时库包含一组核心库(提供了Java语言核心库内的大部分功能)和DaMk虚拟机。
同时Android提供了丰富的库类支持且大部分为开源代码,如采用的数据库为SQ|e。
Android选择它作为移动终端的嵌入式数据库有以下优点,它无需安装和管理配置,它是一个储存在单一磁盘文件中的完整数据库,体积小只有250KB但支持数据库大小至2TB,提供了对事务功能和并发处理的支持,而且比目前流行的大多数数据库运行速度快哩】。
(3)应用框架层:
在应用框架层Android开发人员基金项目:
国家自然科学基金160676016);
湖南省高校科研项目f06D064)万方数据2008年第1l期计算机系统应用可以跟那些核心应用一样拥有访问框架APIs的全部权限。
应用的系结构化设计简化了各组件之间的重用,任何应用都可以分发自己的组件,任何应用也可以使用这些分发的组件(应用的使用方法需遵循框架的安全性约束)。
(4)应用程序层:
Android本身会附带一些核心的应用程序,包括email客户端、短信程序、日历、地图、浏览器、通讯录等等,目前所有的应用程序都是由Java语言开发的。
2Android平台与J2ME的区别J2ME(Java2platformmicroedition)是Java语言专门针对嵌入式电子产品开发的版本,应用在移动电话、PDA、电视机机顶盒以及其它资源受限的设备上,J2ME是目前移动设备上使用最广泛的开发平台。
J2ME平台由多种配置、简表和可选包组成口】。
可以发现J2ME的应用是建立在JVM(或KVM)之上,而主机操作系统是位于J2ME平台之外。
这样的设计一方面提供了跨操作系统的特性,主机操作系统可以是Symbian、WindowsMobile、和Linux,另一方面J2ME虽然提供了统一的开发平台,但是JvM的安全机制让J2ME的应用程序不能调用本地系统资源”o。
而Android向下既包括操作系统内核,向上又拥有通现成的应用软件,加之开源、免费、可以直接使用Java语言为开发人员提供了极大的便利。
另外需要强调的是虽然同样是使用Java语言进行开发,但是Android使用的DoMk虚拟机和J2ME使用的标准的Java虚拟机(JVM)存在以下区别:
(1)Dolvik是基于寄存器,而JVM是基于堆栈的。
Android选择采用寄存器的方式是因为它对提前优化(aheadoftimeoptimization)提供了更好的支持,而这对类似于移动电话这样的受限环境是颇有裨益的。
针对基于寄存器虚拟机和基于堆栈的虚拟机更深入的比较分析指出,基于寄存器的虚拟机对于更大的程序来说,在它们编译时花费的时间更短哺1。
(2)运行环境的区别。
DaMk经过优化,允许在有限的内存中同时运行多个虚拟机的实例。
3Android平台的应用程序设计31开发平台搭建实例开发需要安装的SDK有JDK16和AndroidSDKm5一rcl5,使用的集成开发环境为Eclipse33(需要安装集成环境的Android开发插件ADT,该插件提供了设备模拟器、调试工具、内存和效率调优工具),可以说Android程序的开发目前拥有一个成熟、便捷的开发环境。
32开发实例实例是一个Android平台下的RSS阅读器设计,它可以在线读取某新闻网站的RSS。
RSS(ReallySimpleSyndication)是一种内容发布者用来发布信息的XML数据格式,RSS提要通常使用RSS阅读器转换为可读的友好格式后再显示给用户,因此开发主要涉及两个方面:
XML数据流的解析和如何在Android界面上显示RSS内容。
321核心代码
(1)xML数据流的解析Android直接支持DOM和5AX两种XML数据解析方法,其中sAx方法内存占用小,更适合在手机程序开发,下面是构建一个SAX解析器的核心代码。
十Android上使用SAxParser解析XML数据流事幸分两步从SAXPArserFodory类的实例化一个SAXParser对象牛SAXParserFodoq,spf=SAXParserFodorynewlnstance();
SAXParsersp=spfnewSAXParser();
木从SAxParser中创建XMLRderXMU2eaderxr=spgetXMLReader();
木创建一个在XMLReader中使用的Cont-entHandler幸ExampleHandlermyExampleHondler=newExampleHandler():
xrsetContentHandler(myExampleHandler);
从URL中解析XML数据xrparse(newInputSource(udopenStream(J);
ExampleHandler用来提供解析完成的XML数揖万方数据计算机系统应用2008年第1l期myFxampleHandlergetParsedData();
(2)Android界面上显示RSS内容活动(Adivit、)是最常用的Android应用程序形式。
活动在为视图类的帮助下,为应用程序提供UI。
一个应用程序可以包含一个或多个活动。
这些活动通常与应用程序中的屏幕形成一对一关系,提供移动设备最基本的功能和事件的访问。
显示RsS内容应用程序需要使用两个Adivity类提供用户界面,主屏幕主屏幕列出RSS的提要标题和发布日期,第二个屏幕列出Rss提要项。
RSS阅读器中主界面的Activity代码如下:
拳书RSSReader继承于Adivily类木publicclassRSSReaderextendsAdivityimplementsOnltemClickListener书事实例程序静态定义了SINA的新闻页面的RSSfeed凇publicfinal9dng融污FEEDOFcHOICE=。
http:
IIrSSsinatomcnnewsmarqueeddtxml。
;
publicfinalStringtag=。
RSSReader。
privateRSSFeedfeed=null:
宰幸onCreate方法将在应用程序第一次运行时调用宰publicvoidonCreate(Bundleicicle)SUlperonCreate(icicle