正文-移动RSS阅读软件的设计与实现

上传人:wuyo****995 文档编号:159248920 上传时间:2022-10-08 格式:DOC 页数:37 大小:668.50KB
收藏 版权申诉 举报 下载
正文-移动RSS阅读软件的设计与实现_第1页
第1页 / 共37页
正文-移动RSS阅读软件的设计与实现_第2页
第2页 / 共37页
正文-移动RSS阅读软件的设计与实现_第3页
第3页 / 共37页
资源描述:

《正文-移动RSS阅读软件的设计与实现》由会员分享,可在线阅读,更多相关《正文-移动RSS阅读软件的设计与实现(37页珍藏版)》请在装配图网上搜索。

1、摘 要当今社会,手机已经成为人们工作生活中必不可少的一项通讯和娱乐工具。随着3G时代的到来,手机的各种高层服务和应用层出不穷。特别是在科技日益发达的今天,社会竞争越来越激烈,这要求人们不断的摄取信息来充实自己。要求人们能随时随地的了解并获取所需的信息。在这种情况下,新闻阅读器刚好满足了人们对外物了解的需求本文概括的介绍了Google Android 开发的流程,并重点的介绍了基于Google Android 平台的新闻阅读器的开发过程。首先根据Google android market上面的数据,对给予Google android 移动平台的新闻阅读器进行了需求分析。 然后选取了数据源和其解析

2、方法。在参阅相关资料下,选择了RSS作为新闻阅读器数据的来源;通过与其他解析算法的比较得出解析RSS源的算法SAX解析。在数据准备完成后,通过对Android 用户的调查,设计一套用户体验较好的界面。在此过程中,不仅调用了系统提供的控件,也使用了自定义控件。在数据与界面设计完成后,开始了系统的开发。在文中,着重的从系统的稳定性、频道的切换、数据的持久化等特色功能对基于Google android平台的新闻阅读器的开发进行了简要的介绍。最后,在完成系统的开发后,进行了相关的测试。并将系统发布到Google android market 上供用户下载使用。并根据用户提供的反馈对本系统做出相应的修改

3、。通过开发基于Google android 移动平台技术的新闻阅读器,了解Google android 移动平台的开发过程和Google android 移动平台的特性,通过此接触并熟悉软件开发的过程。关键词:新闻阅读器; Android系统 ;RSS解析;SAX算法AbstractNowadays, mobile phone becomes an essential tool for communication and entertainment;it plays a very important part in peoples life .With the coming age of 3G

4、, more and more phones advanced services and applications come out Especially ,its a more advanced in technology today, increasingly competitive society, which requires people to the intake of information to enrich themselves. Requires people to always be in the know and get the required information

5、. In this case, the news reader just to meet the needs of people know of external objects.This article introduces the Google Android general development process and introduces the focus on Google Android platform news reader development process. Firstly, according to Google android market the above

6、data, given Google android mobile platform news reader needs analysis carried out. Then select the data source and its analytical method. See related information in the next, choose the RSS news reader as a source of data; by comparison with other analytical methods to resolve RSS source derived alg

7、orithm - SAX parsing. When the data preparation has completed, a survey by Android users to design a better user interface experience. In the process, not only called the system of control, also use the custom control. In the data and interface design is complete, start the system development. In th

8、e paper, the emphasis from the systems stability, channel switching, data persistence and other features of the Google android platform based news readers a brief description of the development. Finally, after the completion of system development, some related tests. And posted to the Google android

9、 market system available for download to use. Based on feedback from users of the system to be modified accordingly. Through the development of Google android mobile platform technology based news reader to understand the Google android mobile platform development process and the characteristics of

10、Google android mobile platform, through this contact and are familiar with software development process. Keywords :News reader; Android System; RSS analysis; SAX algorithm;目 录1 引言11.1 背景及其目的11.1.1 课题的背景介绍11.1.2 课题目的21.2 课题研究方法及其内容21.3 小结32 android概述42.1 Android平台的优点42.2 Android平台的特征42.3 Android平台的体系

11、架构52.4Android应用程序构成62.5 Android类库82.6 Android应用程序的开发环境93 Android 移动平台下阅读器关键技术103.1 RSS 技术的研究103.2. SAX解析算法的研究113.2.1 SAX 解析算法的概述113.2.2 SAX解析算法和其他解析算法的比较研究113.3 Android 的控件123.3.1 Android系统控件与自定义控件的比较123.3.2 Android 自定义控件的实现123.4 数据的持久化研究13数据持久化的意义133.4.2 Android 移动平台数据持久化的研究143.6 小结154 系统功能分析164.1

12、需求分析16系统开发背景。164.1.2 系统功能的描述16系统数据流图16系统功能结构174.2 解决方案194.2.1 界面设计方案204.2.2 RSS解析方案204.2.3 数据持久化方案205 系统功能实现215.1 开发平台215.2 系统框架215.3 系统实现215.3.1 布局界面设计215.3.2 RSS源的读取235.3.3 新闻列表的呈现265.3.4 新闻页面的显示及分享285.3.5 数据持久化295.4 小结306 结论31参考文献32致谢331 引言1.1 背景及其目的 课题的背景介绍在飞速发展的今天,移动通讯,互联网信息传播是已经成为了时下最便捷的方式,而当今

13、的手机更是脱离传统的打电话、发短信等基本的功能,开始向智能化机的方向发展,基于3G网络高速数据传输,越来越多的功能和业务将被开发出来并大规模的应用。正基于此,当全世界的目光聚焦在此的时候,Google于2007年11月5日宣布推出基于Linux平台的开源手机操作系统,号称首个为移动终端打造的真正开发和完整的移动软件Android。Android是基于Linux内核的软件平台和操作系统,早期由Google开发,后由开放手机联盟(Open Handset Alliance)开发。它采用了软件层(software stack,又名以软件叠层)的构架,主要分为三部分。底层以Linux内核作为基础,由C

14、语言开发,只提供基础功能。中间层包括函数库Library和虚拟机Virtual Machine,由C+开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以Java编写。Android不只是一个操作系统而已,它包括了:1.经过Google剪裁和调优的Linux Kernel,对于掌上设备的硬件提供了优秀的支持。Google在Linux方面的应用能力不容置疑,Google公司所有的几十万服务器全部是自己修改过的Linux操作系统。2.经过Google修改的Java虚拟机Dalvik,是基于Apache Harmony虚拟机版本进行改良而来,能够提供极高的执行性能。有

15、了Java虚拟机,大部分Java核心类库都已经可以直接运行。3.大量立即可用的类库和应用软件,例如浏览器Webkit,数据库SQLite,让你可轻易开发出来媲美于桌面应用复杂度的手机软件。4.Google已经开发好了大量现成的应用软件,同时可以直接使用Google很多在线服务。5.Google提供了基于Eclipse的完整开发环境,模拟器,文档,帮助,示例将极大推动Android快速的推广和发展。 基于Android众多的优点,围绕Android形成了一个移动手机联盟,主要的手机厂商几乎全部在列,而此联盟在极大的推动Android平台的推广和发展,在未来的几年必将大方异彩,将极大的推动整个手机

16、操作系统甚至是互联网乃至软件行业的发展。 课题目的 Android这个平台对于Google对于大众的意义不在于手机本身,Android存在的目的也不在于挑起手机操作系统之间的混战,而在于推动移动互联网产业链的迅速成型。 具有开源特性的Android平台打破了之前Symbian、windows mobile等操作系统收取高额的授权费用的模式,使得只能手机成本大大的降低;而正是由于它开发源代码,使得手机产生更多个性化的应用。同时,合作方能够在这里得到利润或者创造价值,手机软件行业得到维护协调发展。 以Google、苹果和路基亚为中心各自形成的生态链将以原来数倍的速度推动移动互联网的发展,这正式Go

17、ogle发布Android平台的意义,也是Andorid平台存在的使命所在。而作为Android平台成员之一的中国移动也投资成立了一家通讯公司,专门从事Google手机软件的应用以及本地化的软件的开发,比如将在Google手机平台上添加飞信、输入法等一系列符合国内用户使用特色的功能。国内众多企业也将眼光投入到Andorid上面,并启动了相关的计划来深入的理解并发展Android。更多的手机软件开发企业已经或者筹备着将公司进行转型,从其方向的开发转向到Android的开发。 综上所述,无论是在国内还是在国外,Android平台对手机软件行业和移动手机平台将发挥极大地推动作用,而在未来的几年或者一

18、段时间内,Android将越发的凸显自己的重要性。基于此,我们有必要通过进行相关的研究来了解Android平台,来了解开发Android的那一大批人的先进的理念和思想,并通过这些来了解手机软件行业,进而了解未来无移动互联网的发展趋势,从而更好的适应时代的需要。1.2 课题研究方法及其内容通过开发一个项目,既新闻阅读器来了解Android平台的相关特性和开发的流程。具体来讲:通过分析当前阶段下各种人群的喜好和对事物的关注程度来选择究的项目,既移动RSS阅读软件。根据相关的信息来选取相应的新闻源作为本项目的新闻来源。 1. 通过独立设计UI来了解基于Android平台开发的UI的设计方法。2. 通

19、过选取相应的算法来读取RSS源的内容,来了解Android平台的类库和其相关的设计模式,了解其先进的思想和API的特点。3. 通过设计功能点来初步的了解移动平台开发的所需注意事项,初步的了解移动平台的开发,并了解别体会如何获得更好的人机交互。4. 通过测试来完善程序,使其Bug不合理地方最少化,并进一步了解Android平台的相关先进的特点和其人性化的设计,与此同时熟悉软件开发的相关流程并深刻认识在编码时一些注意事项的重要性。5. 通过发布程序到Google Android Market上,了解Android程序发布的流程,并通过它了解其他平台下的开发、发布的流程。并通过用户的反馈来进行相关的

20、修改。基于此更深刻的理解人机交互的重要性和设计的重要性。 其具体的研究内容包括:1, 数据源文件的选取。2, 界面的设计。3, 数据源的读取。4, 人机交互的效果。5, 程序的测试。6, 产品的发布。1.3 小结本节主要介绍了Google Android平台的相关信息和对其发展前景的展望,并简单的介绍了Android开发的重要性和必要性,同时简要概述了Android开发的简单流程和测试及其发布的流程的相关内容。2 Android概述Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备,它是Google于2007年11月推出的一款全新的智能手机平台,由操作系统、中间件、

21、用户界面和应用程序组成。和其它操作系统一样,它采用了分层的架构。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 2012年2月数据,Android占据全球智能手机操作系统市场52.5%的份额,中国市场占有率为68.4%。2.1 Android平台的优点1、开放性在优势方面,Android平台首先就是其开发性,开

22、发的平台允许任何移动终端厂商加入到Android联盟中来。显著的开放性可以使其拥有更多的开发者,随着用户和应用的日益丰富,一个崭新的平台也将很快走向成熟。2、挣脱运营商的束缚在过去很长的一段时间,特别是在欧美地区,手机应用往往受到运营商制约,使用什么功能接入什么网络,几乎都受到运营商的控制。Google推动的Android终端天生就有网络特色,将让用户离互联网更近。3、丰富的硬件选择这一点还是与Android平台的开放性相关,由于Android的开放性,众多的厂商会推出千奇百怪,功能特色各具的多种产品。功能上的差异和特色,却不会影响到数据同步、甚至软件的兼容。4、不受任何限制的开发商Andro

23、id平台提供给第三方开发商一个十分宽泛、自由的环境,因此不会受到各种条条框框的阻扰。2.2 Android平台的特征应用框架3:用于开发可重用、可替代的组件。Dalvik虚拟机:Android采用的是自主开发的Dalvik虚拟机,它具有很好的硬件兼容性,在保证API兼容的同时针对移动手机进行了大幅优化,占用资源更小,运行效率更高。集成的浏览器:Android集成了基于Webkit引擎的网页浏览器。Webkit是一个开源浏览器网页排版引擎。优化的图形:Android提供了优化过的图形系统, 该系统由一个自定义的2D图形库和一个遵循OpenGL ES 1.0标准(硬件加速)的3D图形库组成。SQL

24、ite数据库:SQLite数据库是Android自带的一个标准的数据库,支持SQL语句,是一个轻量级的嵌入式数据库。媒体功能:支持各种通用的音视频和静态图像格式。网络支持功能:支持蓝牙、GPRS-EDGE、3G和WiFi无线网络。硬件支持功能:支持相机、GPS、导航和感应加速器等各类硬件。强大的开发环境:包括设备模拟器,调试工具,内存和性能检测工具,以及Eclipse IDE的开发插件。2.3 Android平台的体系架构Android是以Linux为核心的手机操作平台,作为一款开放式的操作系统,随着Android的快速发展,如今已允许开发者使用多种编程语言来开发Android应用程序,而不再

25、是以前只能使用Java开发Android应用程序的单一局面,因而受到众多开发者的欢迎,成为真正意义上的开放式操作系统。Android的系统架构和其它操作系统一样,采用了分层的架构。android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。 图2.1 Android体系结构图从架构图看,Android分为四个层,从高层到低层分别是应用程序层、应用程序框架层、系统运行库层和linux核心层。蓝色的代表java程序,黄色的代码为运行JAVA程序而实现的虚拟机,绿色部分为C/C+语言编写的程序库,红色的代码内核(linux内核+drvier)2.4 And

26、roid应用程序构成Android开发四大组件分别是:活动(Activity): 用于表现功能。服务(Service): 后台运行服务,不提供界面呈现。广播接收器(BroadcastReceiver):用于接收广播。内容提供商(Content Provider): 支持在多个应用中存储和读取数据,相当于数据库。 1、 Activity Android 中,Activity 是所有程序的根本,所有程序的流程都运行在Activity 之中,Activity可以算是开发者遇到的最频繁,也是Android 当中最基本的模块之一。在Android的程序当中,Activity 一般代表手机屏幕的一屏。如果

27、把手机比作一个浏览器,那么Activity就相当于一个网页。在Activity 当中可以添加一些Button、Check box 等控件。可以看到Activity 概念和网页的概念相当类似。 一般一个Android 应用是由多个Activity 组成的。这多个Activity 之间可以进行相互跳转,例如,按下一个Button 按钮后,可能会跳转到其他的Activity。和网页跳转稍微有些不一样的是,Activity 之间的跳转有可能返回值,例如,从Activity A 跳转到Activity B,那么当Activity B 运行结束的时候,有可能会给Activity A 一个返回值。这样做在很

28、多时候是相当方便的。 当打开一个新的屏幕时,之前一个屏幕会被置为暂停状态,并且压入历史堆栈中。用户可以通过回退操作返回到以前打开过的屏幕。我们可以选择性的移除一些没有必要保留的屏幕,应为Android会把每个应用的开始到当前的每个屏幕保存在堆栈中。 2 、Service Service 是android 系统中的一种组件,它跟Activity 的级别差不多,但是他不能自己运行,只能后台运行,并且可以和其他组件进行交互。Service 是没有界面的长生命周期的代码。Service 是一种程序,它可以运行很长时间,但是它却没有用户界面。这么说有点枯燥,来看个例子。打开一个音乐播放器的程序,这个时候

29、若想上网了,那么,我们打开Android 浏览器,这个时候虽然我们已经进入了浏览器这个程序,但是,歌曲播放并没有停止,而是在后台继续一首接着一首的播放。其实这个播放就是由播放音乐的Service进行控制。当然这个播放音乐的Service也可以停止,例如,当播放列表里边的歌曲都结束,或者用户按下了停止音乐播放的快捷键等。service 可以在和多场合的应用中使用,比如播放多媒体的时候用户启动了其他Activity这个时候程序要在后台继续播放,比如检测SD 卡上文件的变化,再或者在后台记录你地理信息位置的改变等等,总之服务嘛,总是藏在后头的。 3、 BroadcastReceiver 在Andro

30、id 中,Broadcast 是一种广泛运用的在应用程序之间传输信息的机制。而BroadcastReceiver 是对发送出来的Broadcast进行过滤接受并响应的一类组件。可以使用BroadcastReceiver 来让应用对一个外部的事件做出响应。这是非常有意思的,例如,当电话呼入这个外部事件到来的时候,可以利用BroadcastReceiver 进行处理。例如,当下载一个程序成功完成的时候,仍然可以利用BroadcastReceiver 进行处理。BroadcastReceiver不能生成UI,也就是说对于用户来说不是透明的,用户是看不到的。BroadcastReceiver通过Not

31、ificationManager 来通知用户这些事情发生了。BroadcastReceiver 既可以在AndroidManifest.xml 中注册,也可以在运行时的代码中使用Context.registerReceiver()进行注册。只要是注册了,当事件来临的时候,即使程序没有启动,系统也在需要的时候启动程序。各种应用还可以通过使用Context.sendBroadcast () 将它们自己的intent broadcasts广播给其他应用程序。 注册BroadcastReceiver有两种方式: (1)在AndroidManifest.xml进行注册。这种方法有一个特点即使你的应用程序

32、已经关闭了,但这个BroadcastReceiver依然会接受广播出来的对象,也就是说无论你这个应用程序时开还是关都属于活动状态都可以接受到广播的事件; (2)在代码中注册广播。 第一种俗称静态注册,第二种俗称动态注册,这两种注册BroadcastReceiver的区别: 动态注册较静态注册灵活。实验证明:当静态注册一个BroadcastReceiver时,不论应用程序是启动与否。都可以接受对应的广播。 动态注册的时候,如果不执行unregisterReceiver();方法取消注册,跟静态是一样的。但是如果执行该方法,当执行过以后,就不能接受广播了。 4、 Content Provider

33、Content Provider 是Android提供的第三方应用数据的访问方案。 在Android中,对数据的保护是很严密的,除了放在SD卡中的数据,一个应用所持有的数据库、文件、等等内容,都是不允许其他直接访问的。Andorid当然不会真的把每个应用都做成一座孤岛,它为所有应用都准备了一扇窗,这就是Content Provider。应用想对外提供的数据,可以通过派生ContentProvider类, 封装成一枚Content Provider,每个Content Provider都用一个uri作为独立的标识,形如:content:/com.xxxxx。所有东西看着像REST的样子,但实际上

34、,它比REST 更为灵活。和REST类似,uri也可以有两种类型,一种是带id的,另一种是列表的,但实现者不需要按照这个模式来做,给你id的uri你也可以返回列表类型的数据,只要调用者明白,就无妨,不用苛求所谓的REST。 另外,Content Provider不和REST一样只有uri可用,还可以接受Projection,Selection,OrderBy等参数,这样,就可以像数据库那样进行投影,选择和排序。查询到的结果,以Cursor(参见:reference/android/database/Cursor.html )的形式进行返回,调用者可以移动Cursor来访问各列的数据。 Cont

35、ent Provider屏蔽了内部数据的存储细节,向外提供了上述统一的接口模型,这样的抽象层次,大大简化了上层应用的书写,也对数据的整合提供了更方便的途径。Content Provider内部,常用数据库来实现,Android提供了强大的Sqlite支持,但很多时候,你也可以封装文件或其他混合的数据。 在Android中,ContentResolver是用来发起Content Provider的定位和访问的。不过它仅提供了同步访问的Content Provider的接口。但通常,Content Provider需要访问的可能是数据库等大数据源,效率上不足够快,会导致调用线程的拥塞。因此Andr

36、oid提供了一个AsyncQueryHandler(参见:reference/android/content/AsyncQueryHandler.html),帮助进行异步访问Content Provider。 在各大组件中,Service和Content Provider都是那种需要持续访问的。Service如果是一个耗时的场景,往往会提供异步访问的接口,而Content Provider不论效率如何,都提供的是约定的同步访问接口2.5 Android类库Android为开发者提供了丰富的类库:Android.util 包含一些底层辅助类,例如,特定的容器类、XML辅助工具等。Android.

37、os 提供基本的操作服务,消息传递和进程间通信IPC。Android.graphics 提供图形渲染功能。 A 提供一套丰富的文本处理工具。Android.database 包含底层API处理数据库,方便操作数据库表和数据。Android.view 一组核心用户界面框架。Android.widge 提供标准的用户界面元素,lists(列表),buttons(按钮),layoutmanagers(布局管理器)等,是组成界面的基本元素。Android.app 提供高层应用程序模型。Android.provider 提供方便调用系统提供的content providers的接口。Android.te

38、lephony 提供API交互和手机设备的通话接口。Android.webikit 包含一系列工作在基于Web内容的API。除了使用以上的Android类库,开发者还可以使用一些通用的Java类库,比如javaio、java.math等。此外,Android还提供了一些可选的API,主要有:wi-Fi API提供了一种与Wi-Fi网络接口的底层无线堆栈相互交流的机制。Location-Based Service 定位服务,允许获取手机当前的位置信息。MediaAPIs 多媒体API主要用于播放媒体文件。3D Graphics with OpenGL 提供了访问3D功能的API接口。2.6 An

39、droid应用程序的开发环境Android通常采用Eclipse作为应用程序的开发环境。Eclipse是基于Java的,开放源代码的可扩展开发平台。就其本身而言,它只是一个框架和一个服务,所有开发工具都是用插件的形式提供的,通过插件组件构建开发环境,这种设计使得Eclipse具有开放式可扩充的结构。Eclipse软件可以集成不同的软件工具开发供应商的产品,任何开发工具厂商都可以将他们的开发工具或组件加入到Eclipse平台,用户可以通过相同的接口使用不同的工具。此外,Eclipse不仅支持团队协同开发,还提供了详细的帮助文档以及对许多外部工具的支持。Android为Eclipse定制了一个插件

40、,即Android Development Tools(ADT),目的是为用户提供一个强大的综合环境用于开发Android应用程序。ADT扩展了Eclipse的功能,可以让用户快速地建立Android项目,创建应用程序界面,在基于Android框架API的基础上添加组件,以及用SDK工具调试应用程序。不同版本的Eclipse安装插件的方法和步骤是不同的,这里是基于Eclipse34版本的,具体的ADT插件安装步骤为5:打开Eclipse IDE,依次单击Menu项中的HelpSoftware Updates,在弹出的对话框中,选择Available Software标签;单击Add Site,

41、输入“http:/dl-ssl.google.corn/android/eclipse/,单击“Ok”按钮,就可以看到可用的插件,选择“AndroidDeveloperTools”和“AndroidDDMS”,单击“install”按钮,并接受协议,接着依次点击Next和Finish;最后,选择InstallAll开始安装,安装完成后重新启动Eclipse。安装好插件后,还需要设定Android SDK路径参数,过程如下:单击WindowPreferences项,选中Android,在右侧设定Android SDK所在目录为SDK Location,单击“Ok”按钮完成配置。至此就搭建好了An

42、droid应用程序开发环境。3 Android 移动平台下阅读器关键技术3.1 RSS 技术的研究RSS(简易信息聚合,也叫聚合内容)是一种描述和同步网站内容的格式。RSS可以是以下三个解释的其中一个: Really Simple Syndication;RDF (Resource Description Framework) Site Summary; Rich Site Summary。但其实这三个解释都是指同一种Syndication的技术。RSS目前广泛用于网上新闻频道,blog和wiki,主要的版本有0.91, 1.0, 2.0。使用RSS订阅能更快地获取信息,网站提供RSS输出,有

43、利于让用户获取网站内容的最新更新。网络用户可以在客户端借助于支持RSS的聚合工具软件,在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。 RSS是一种起源于网景的推技术,将用户订阅的内容传送给他们的通讯协同格式(Protocol)。 它是一种XML格式范畴。通常RSS文件都是标 为XML,RSS files(通常也被称为RSS feeds或者channels)通常只包含简单的项目列表。一般而言,每一个项目都含有一个标题,一段简单的介绍,还有一个URL链接(比如是一个网页 的地址)。其他的信息,例如日期,创建者的名字等等,都是可以选择的。 RSS是站点用来和其他站点之间共享内容的一种简易

44、方式(也叫聚合内容),通常被用于新闻 和其他按顺序排列的网站,例如Blog。一段项目的介绍可能包含新闻的全部介绍,Blog post等等。或者仅仅是额外的内容或者简短的介绍。这些项目的链接通常都能链接到全部的内容。网络用户可以在客户端借助于支持RSS的新闻聚合工具软件 (例如NewzCrawler、FeedDemon),在不打开网站内容页面的情况下阅读支持RSS输出的网站内容。网站提供RSS输出,有利于让用户发现网站内容的更新。RSS 的优点:1. 您可以看到没有广告和图片的标题或文章的概要阅读,这样你不必阅读全文即可知文章讲的一个意思是什么,为您节省时间。 2. RSS阅读器会自动更新你定制

45、的网站内容,保持新闻的及时性。要订阅新闻,可以直接点击seo博客上的XML图标,或到专栏作者点击订阅文章,即完成订阅,每天你就可以打开RSS阅读最新文章,而不必打开网页了。 3. 使用RSS可以根据你自已的喜好定制多个RSS提要,这样做的好处是从多个新闻来源搜集,然后整合新闻到单个数据流当中。 4. RSS提交给RSS网站后,不但容易带来网站流量,而且能加快搜索引擎收录与信息的推广。3.2. SAX解析算法的研究 SAX 解析算法的概述RSS 源的数据结构为XML文件,当前 Google Android 处理读取XMl数据有三种主流方式:1.DOM 解析;2. Pull 解析 3.SAX解析由

46、于Google Android 平台手机系统资源有限,且基于Andorid 平台的新闻阅读器所读取的数据内容不是非常多,所以我选择了性能消耗较小的SAX解析作为解析XML文件的方法。 SAX(Simple API For XML)是一个公共的基于事件的XML文档解析标准,这里简单介绍一下MSXML是如何通过COM接口实现SAX功能的。首先需要注意的使SAX是一 个接口集合,它允许开发人员在自己的应用中通过这个接口集合来读取和分析XML文档中的数据。SAX2是当前微软最新的API。SAX最初是为Java编程语言设计的,并使用了Java的接口定义,因为Java语言接口并不是语言中立的,所以各个厂商

47、就需要建立自己的工具把 SAX接口映射到它们自己的特殊的语言上去。微软的SAX2给VB和VC提供了接口,当然它们都有自己的接口集合映射到各自的语言和类型定义上去(比如 ISAXContentHandler是VC的接口,而IVBSAXContentHandler是VB的接口)。 能够通过一个简单的,快速的方法来对XML文档进行处理,并且和DOM相比的话,它所占用的系统资源更少。我们知道,当你通过DOM来操作一个XML文件 的时候,DOM读取该文件,然后把它分割成单个的对象(比如元素,属性和注释等等),然后在内存中创建一个关于该文档的树结构。使用DOM的好处是可以引用和操作每一个对象。但是为一个文

48、档创建一个树结构,尤其当文档尺寸很大的时候,需要大量的内存空间。 SAX解析算法和其他解析算法的比较研究(1)与DOM算法的比较。和DOM不同的是,SAX2是基于事件的,这意味着当它在一个XML文档中发现特殊的符号的时候,它会产生相关的事件。SAX2的优点是当它读到 XML文档中每一部分内容的时候,就会产生一个事件,我们的应用程序就可以在这个事件中写入具体的处理代码,然后解析器就移动到文档的下一段。因为 SAX2以序列的形式处理文档,它和DOM相比,对内存的需求很少。而且当SAX2找到需要的信息的时候,它能够停止对当前文档的解析。因为SAX不需要在内存中建立整个文档的树结构,SAX和DOM相比

49、,可以被认为是一个轻量级的接口集合。(2)与Pull 算法的比较。与DOM 解析算法相同的是,PULL算法也是基于节点的,即,在使用PULL解析XML时,解析器读入整个文档并构建一个驻留在内存的树结构(节点树),然后才可以使用PULL标准的接口来操作这个树结构。所以,同DOM一样,Pull解析式将内容读到内存中去,这样就消耗了系统的大量资源,而且给开发提取数据也造成了一定的麻烦。而SAX不需要在内存中建立整个文档的树结构,SAX和Pull相比,可以被认为是一个轻量级的接口集合。由于此,在基于Google Android 移动平台技术的RSS阅读软件的设计中,使用了SAX解析算法。3.3 And

50、roid 的控件3.3.1 Android系统控件与自定义控件的比较在Google Android 中给出了非常多的绚丽的控件,但是在某些时候需要的实现某些功能的时候,系统的控件显得有些笨拙和难以控制,如,在本系统中,本打算使用系统自带的控件TabLayout 显示频道,但是现在的过程中,发现,该控件的每一个Tab之间有一定距离的间隔,且每一个Tab上面的图片很难控制其显示的方式和显示的效果,因此该综合美观和操作性的基础上,决定不用该控件来显示频道切换界面。而才用笔者自定义的控件TabController ,此控件从需求上必须能弥补系统控件TabLayout 的不足,且能易于用户操作。3.3.

51、2 Android 自定义控件的实现在Google Android 移动平台中,自定义控件都大致可以分成俩部分来走。第一,界面的实现;第二,功能的实现;第三,控件的调用。(1) 界面的实现。在Google Android 平台中所有的控件都是继承了View这个超类,所以在我们自定义一个控件的时候也需要继承这个超类,但是有些情况下不需要继承这个超类而是继承它的子类,如基于Google Android 平台的新闻阅读器中,就继承了这个超类的子类ViewGroup,即:public class TabController extends ViewGroup。基于此我们就得到了我们要实现的那个控件的最

52、基本的那部分界面的实现。(2) 要实现一个控件,让其能产生特定的效果,我们需要自己来重写父类某些甚至是全部的构造函数,如在基于Google Android 平台的新闻阅读器中,笔者就重写了protected void onLayout(boolean changed, int l, int t, int r, int b) protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) .protected void onFinishInflate() 等方法。在方法中实现所需的功能,这样一个自定义控件就好了。 (3)

53、控件的调用。在Android 系统中,控件的调用非常的方便,如系统控件TextView,其调用方式如下:但是当使用自定义控件的时候,其调用方式就与其有很大的区别。在自定义控件中,其调用的形式是通过命名空间的形式来进行调用的。如,在基于Google Android 移动平台的RSS阅读软件中,调用自定义控件的方式如下:.3.4 数据的持久化研究数据持久化的意义持久化(Persistence),即把数据(如内存中的对象)保存到可永久保存的存储设备中(如磁盘)。持久化的主要应用是将内存中的数据存储在关系型的数据库中,当然也可以存储在磁盘文件中、XML数据文件中等等。持久化是一种对象服务,就是把内存中

54、的对象保存到外存中,让以后能够取回。需要实现至少3个接口: void Save(object o) 把一个对象保存到外存中 Object Load(object oid) 通过对象标识从外存中取回对象 bool Exists(object oid) 检查外存中是否存在某个对象为什么需要持久化服务呢?那是由于内存本身的缺陷引起的: 内存掉电后数据会丢失,但有一些对象是无论如何都不能丢失的,比如银行账号,遗憾的是,人们还无法保证内存永不掉电。内存过于昂贵,与硬盘、磁带、光盘等 外存相比,内存的价格要高23个数量级,而且维持成本也高,至少需要一直供电吧。所以即使对象不需要永久保存,也会因为内存的容量

55、限制不能一直呆在内存 中,需要持久化来缓存到外存。既然持久化服务在看得到的未来还有市场,如何构建一个好的持久化框架,框架是否真的好在于如何在扩展性、缩放性、重用性上取得良好的平衡: 扩展性,如果一个持久性框架不能支持用户定义的类型,显然不是一个好的框架。 缩放性,保存和取回对象都需要耗费cpu、带宽、时间资源,哪一个消耗太多都不能接受。 重用性是建立框架的初衷,就是通过框架能够减少一些编码和测试的工作量。 持久化方案可以分为关系数据库方案、文件方案、对象数据库方案、xml数据库方案,目前 主流的持久化方案是关系数据库方案,关系数据库方案不仅解决了并发的问题,更重要的是,关系 数据库还提供了持久

56、化服务之外的价值:统计分析功能。刚才我说到,凡是可以序列化的对象都可以持久化,极端的说,我们可以只建立一个表 Object(OID,Bytes),但基本上没有人这么做,因为一旦这样,我们就失去了关系数据库额外的统计分析功能。关系数据库和面向对象之间有一条鸿沟,因为两中模式不匹配,所以就存在一个OR(Object/Relations)映射问题。3.4.2 Android 移动平台数据持久化的研究在 Google Android 平台中,数据的持久化,官方提供了四种方法,分别为:1. SharePerfrence;2. Files;3. 数据库 4. 网络。 (1)Preferences从其保存数

57、据的结构来分析,这是一个相对较轻量级的存储数据的方法。类似于我们常用的ini文件保存软件初始化设置,同样在Android平台常用于存储较简单的参数设置。例如,可以通过它保存上一次用户所作的修改或者自定义参数设定,当再次启动程序后依然保持原有的设置。通过Context.getSharedPreferences()方法来读写数值,这个方法通过设置name来使得同一个程序内的其它模块共享数据。如果不需要与其它模块共享数据,可以使用Activity.getPreferences()方法保持数据私有。需要着重强调一点,无法直接在多个程序间共享Preferences数据(不包括使用Content Prov

58、iders)。 (2)Files。这是第二种方法,可以在设备本身的存储设备或者外接的存储设备中创建用于保存数据的文件。同样在默认的状态下,文件是不能在不同的程序间共享。1)写文件:调用Context.openFileOutput()方法根据指定的路径和文件名来创建文件,这个方法会返回一个FileOutputStream对象。2)读取文件:调用Context.openFileInput()方法通过制定的路径和文件名来返回一个标准的Java FileInputStream对象。 (3)数据库。Databases在Android API中包括了应用SQLite databases的接口,每个程序所创

59、建的数据库都是私有的,换句话说,程序间无法相互访问对方的数据库。在程序中创建SQLiteDatabase对象,其中包含了大部分与database交互的方法,例如:读取数据或者管理当前数据。可以应用SQLiteDatabase和其subClassSQLiteOpenHelper的create()方法来创建新的数据库。(4)Network通过网络来获取和保存数据资源,这个方法需要设备保持网络连接状态,所以相对存在一些限制。下面列出了两个用于相关操作的类:J.* .*3.6 小结本章主要从RSS 技术的研究、SAX解析算法的研究等多方面介绍了基于Google android 移动平台下的新闻阅读器中

60、使用到的关键技术。通过,对这些技术的研究 ,使笔者对开发基于Google android 移动平台下的新闻阅读器有了更深的认识 ,也对开发该系统有了一个全局上的了解,对以后的开发研究起着向导性的作用。4 系统功能分析4.1 需求分析系统开发背景。在信息高速发展的今天,人们对信息非常的重视,希望能随时随地的获取即时更新的信息。而新闻阅读器刚好满足人们的要求。在传统的平台如:IPhone,有许多类似的程序,都受到了用户的好欢迎。通过武汉某公司在Google android market 上面的程序的调查,发现关于信息方面的程序普遍受到广大用户的欢迎。因此本系统将更好的满足人们对信息的需求,实现信息

61、的快捷获取。 系统功能的描述1)新闻组的管理: 用户能按照自己的需求来对新闻组进行增删改查等基本功能的实现2)RSS新闻频道的管理 用户能够按照自己的需求对RSS新闻频道进行增删改查等基本功能的实现3)新闻频道阅读: 当用户打开一个RSS新闻频道时,能够准确无误的从网络上加载该频道的新闻列表4)新闻信息的阅读:当用户觉得某一条新闻有趣时,能够打开新闻显示界面进行概要浏览,还能进去具体网页进行更为详细的了解5)新闻的更新: 当RSS更新以后,程序能做相应的更新,能与网络上的内容保持一致性。做到即时更新。6)新闻的分享: 当用户认定某一条新闻比较有趣的时候,可用与别人通过SMS短信进行分享。系统数

62、据流图RSS源地址在手机界面上显示SAX解析新闻列表概要信息 浏览界面用户点击一项返回信息分享详情浏览短信发送开启网页 图4.1 系统流程图 系统功能结构 (1)系统功能结构 根据系统需求描叙和系统数据流图,得出系统功能结构如下:新闻的显示新闻组的管理新闻频道的管理新闻的分享理基于Android 移动平台技术的新闻阅读器 图4.2系统功能结构图(2) 系统构架的设计Android分为四层,从上层到底层分别是应用层、应用框架层、系统运行库层和Linux内核层。(1). 应用层。应用层是用Java语言编写的运行在虚拟机上的程序。其实,Google 最开始时就在 Android 系统中捆绑了一些核心应用,比如E-mail客户端、SMS短消息程序、日历、地图、游览器、联系人管理程序,等等。(2). 应用框架层。这一层编写Google 发布的核心应用时所使用的API 框架,开发人员同样可以使用这些框架来发布自

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!