oid操作系统及其开发环境
Android和其他操作系统一样,采用了分层的架构。从低层到高层分别是Linux内核层,系统运行库层,应用
程序框架层,应用程序层。Android的内核为Linux2.6版本,位于软件栈层和硬件层之间。Linux内核之上为系统库函数。Android重新设计了
Java代码的运行环境,主要是由核心库和Dalvik虚拟机构成。核心库提供了JAVA编程语言核心库的大多数功能,每个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Android操作系统同一系列核心应用程序打包一起发布,所有的应用程序都是使用JAVA语言编写。应用程序框架简化了组件的重用,任何一个应用程序都可以发布它的功能块,并供其他的任何应用程序使用,使用户可以方便地替换程序组件
[3]
。
本论文使用的SDK版本为android-sdk-windows-1.6_r1,开发环境为Eclipse,在JDK1.6下,使用Ant工具进行编译。
1.2
系统的网络结构
图1系统的网络结构
系统的网络结构如图1所示,本系统支持异构网络的接入,支持发布/订阅终端以固定IP网络、WLAN、移动网络(如GPRS)等形式接入,终端发出的发布/订阅请求将在无线消息网关处汇聚。无线消息网关的引入消除了无线JMS应用与有线网络JMS应用之间的差异,使得无线通讯层对移动应用透明,开发人员无须关心使用何种无线通讯方式,而只需关注于标准的JMS调用上。作为在移动领域的扩展,Softwire公司的纯Java解决方案——iBus//Mobile是这方面的先行者。它包括了一个用于连接无线移动网络和有线网络的消息网关,用于Java可编程移动设备的轻量级JMSAPI库以及可选择的后台JMS服务器(JMSprovider)。可根据需要采用固定IP网络、WLAN、移动网络等多种通讯方式[4]。iBus//Mobile相对于标准JMS系统的不同之处在于其提供了一个iBus//MobileGateway,即消息网关,由异构网络发送的数据将汇集到消息网关处,消息网关根据不同的消息类型提供了不同的接口对消息进行解析,之后发送到JMSProvider进行发布/订阅操作。JMSProvider返回的消息同样要经过消息网关分发到异构网络的不同终端,iBus支持多种JMSProvider实现,如JBoss、ActiveMQ等,为
-2-
中国科技论文在线
应用开发提供了一定的便利。
paper.edu
2Android客户端设计
如前节所述,本文采用在移动终端与JMSProvider之间加入消息网关的方案来实现无线发布/订阅系统。iBus//Mobile实现了这个消息网关,从而屏蔽了网络底层结构的差异性。本节将重点研究如何使用JMS在Android平台上进行发布/订阅系统的开发。
2.1
Android客户端的结构
图2
Android客户端结构框架
图2为Android消息客户端的实现结构图,每个客户端由上层应用程序、SQLite数据库系统与发布订阅模块组成,其中发布订阅模块又包括发布主题、订阅主题、线程管理三个部分。发布主题与订阅主题采用标准JMSAPI编写,作为单独线程启动,线程管理由J2SE开发包中的java.util.concurrent.ThreadPoolExecutor类提供。应用程序层包括消息显示模块、发布驱动模块、订阅驱动模块以及数据库驱动模块,其数据流图如图3所示。数据库驱动模块对
常用的SQLite数据库操作进行了封装,实现了插入,删除,修改以及
查询等功能,其中查询功能既支持按照主题查询又支持复合条件查询。消息显示模块作为软件的用户界面,提供快速按主题浏览消息标题的功能。消息显示模块在数据查询与更新时需要向数据库驱动模块发送操作请求和查询条件,数据库驱动模块完成处理之后将结果返回消息显示模块。发布驱动模块用于启动一个发布线程,消息发布成功之后向数据库驱动模块发送消息的完整内容,由数据库驱动模块完成消息的本地存储。订阅驱动模块用