基于android平台的rss阅读器的设计与开发内容摘要:
t Provider 能够灵活的替换底层使用的存储设备,使开发者可以专著于应用逻辑的开发,不用考虑底层存储设备的细节,从而使应用系统具有良好的数据 Rss 解析剖析 在 Android 平台上可以使用 Simple API for XML(SAX)、 Document Object Model(DOM)和 Android 附带的 pull 解析器解析 XML 文 件。 (1)使用 SAX 读取 XML 文件 SAX 是一个解析速度快并且占用内存少的 XML 解析器,非常适合用于 Android等移动设备。 SAX 解析 XML 文件采用的是事件驱动,也就是说,它并不需要解析完整个文档,在按内容顺序解析文档的过程中, SAX 会判断当前读到的字符是否合法XML 语法中的某部分,如果符合就会触发事件。 所谓事件,其实就是一些回调( callback)方法,这些方法 (事件 )定义在 ContentHandler 接口 [5]。 下面是一些 ContentHandler 接口常用的方法: startDocument()当遇到文档的开头的时候,调用这个方法,可以在其中做一些预处理的工作。 endDocument()和上面的方法相对应,当文档结束的时候,调用这个方法,可以在其中做一些善后的工作。 startElement(String namespaceURI, String localName, String qName, Attributes atts)当读到一个开始标签的时候,会触发这个方法。 namespaceURI 就是命名空间,localName 是不带命名空间前缀的标签名, qName 是带命名空间前 缀的标签名。 通过atts 可以得到所有的属性名和相应的值。 要注意的是 SAX 中一个重要的特点就是它的流式处理,当遇到一个标签的时候,它并不会纪录下以前所碰到的标签,也就是说,在 startElement()方法中,所有你所知道的信息,就是标签的名字和属性,至于标签的嵌套结构,上层标签的名字,是否有子元属等等其它与结构相关的信息,都是不得而知的,都需要你的程序来完成。 这使得 SAX 在编程处理上没有 DOM 来得那么方便。 endElement(String uri, String localName, String name)这个方法和上面的方法相对应,在遇到结束标签的时候,调用这个方法。 characters(char[] ch, int start, int length)这个方法用来处理在 XML 文件中读到的内 容, 10 第一个参数用于存放文件的内容,后面两个参数是读到的字符串在这个数组中的起始位置和长度,使用 new String(ch,start,length)就可以获取内容。 (2)使用 DOM 读取 XML 文件 除了可以使用 SAX 解析 XML 文件,大家也可以使用熟悉的 DOM来解析 XML文件。 DOM 解析 XML 文件 时,会将 XML 文件的所有内容读取到内存中,然后允许您使用 DOM API 遍历 XML 树、检索所需的数据。 使用 DOM操作 XML 的代码看起来比较直观,并且,在某些方面比基于 SAX 的实现更加简单。 但是,因为 DOM需要将 XML 文件的所有内容读取到内存中,所以内存的消耗比较大,特别对于运行Android 的移动设备来说,因为设备的资源比较宝贵,所以建议还是采用 SAX 来解析XML 文件,当然,如果 XML 文件的内容比较小采用 DOM 是可行的。 (3)使用 Pull 解析器读取 XML 文件 除了可以使用 SAX 和 DOM 解析 XML 文件,大 家也可以使用 Android 内置的Pull 解析器解析 XML 文件。 Pull 解析器的运行方式与 SAX 解析器相似。 它提供了类似的事件,如:开始元素和结束元素事件,使用 ()可以进入下一个元素并触发相应事件。 事件将作为数值代码被发送,因此可以使用一个 switch 对感兴趣的事件进行处理。 当元素开始解析时,调用 ()方法可以获取下一个 Text类型元素的值 [3]。 本章小结 本章对 Android 平台的特征、架构以及 Android 应用的构成和工作机制进行了详细的分 析。 对于 Android 应用程序来说,主要由 Activity、 Intent Receiver、 Service 和Content Provider 四部分组成,但并不是对于每一个应用程序,这四部分都是必须的。 Activity 是应用程序中最重要的一种构造块,我们对其进行了详细的分析, 包括Activity 的生命周期以及 Activity 之间的切换。 第三 章 开发环境介绍及构 建 Android 平台为开发者提供了源码开放的软件开发包 ( SDK) ,它包含了使用 Java语言开发 Android 平台应用的必要工具和组件 (API)。 进行开发前先要建立合适的开发环境 ,其中基于 Java 的整合型可扩展平台 Eclipse 是我们的首选。 搭建环境所需要的软件: 操作系统: Windows XP 或 Linux; 11 软件包: Android SDK, ADT; IDE 环境: Eclipse IDE + ADT 以上; JDK: Java Runtime Environmt, JDK; 安装步骤: 安装 JDK 然后配置环境变量 ; 安装 Eclipse; Android SDK 配置 /安装 : 首先在 下载,选择相应的系统进行安装; 安装 Android ADT 插件: Eclipse,在导航菜单中选择 HelpInstall New Software。 在 work with 中输入 ADD 然后输入 name, 随便取个有意义的,都选中安装,完毕后重启 Eclipse; Eclipse里配置 SDK路径,选择 WindowsPreferencesAndroid,选择 Android SDK 的位置 [6]。 第四 章 需求分析 功能需求 RSS 阅读器扮演着与用户直接交互并且提供服务的重要角色,它需要提供良好的用户体验,方便用户操作,接收用户的操作并把这些操作转换成相应的命令,采用用户活动的方式完成各个服务的 逻辑流程。 本软件主要解析腾讯和新浪提供的 RSS Reed, 其功能需求主要包括以下几方面内容 ,业务流程如图 41 所示 : (1)不同 View 之间的切换功能 用户通过手指的左右滑动来切换不同的视图,方便用户在不同视图中查看信息和行操作。 如图 42 所示: (2)新浪 Rss 功能 根据频道名称解析出这个频道所包含的内容并记录,在根据这些内容链接网络,通过 HtmlParse 的解析获取相应的内容并保存;切换不同的频道。 如图 43 所示: 12 图 41 业务流程图 图 42 主界面用例图 13 图 43 新浪 Rss 用例图 (3)腾讯 Rss 功能 该功能与新浪 Rss相似,如图 44所示 : 图 44 腾讯 Rss 用用例图 (4)历史记录浏览功能 记录用户浏览过的内容,以方便用户再次查看,这样节省 GPRS 流量,减少用户的损失; 当用户不需要这些记录的时候可以清除掉这些记录。 如图 45 所示 : (5)收藏功能 当用户对一些文章感兴趣时,可以将其添加至收藏列表;当用户不需要某条记录是可将其从收藏列表中删除。 如图 46 所示: (6)本地缓存 在浏览新闻和文章的过程中会下载图片和文字内容,将这些内容保存值本地,在下次浏览同样的内容的时 候就不用再次链接网络,直接在本地读取就可,节省用户的GPRS 流量;当手机存储空间不足时用户可以选择删除这些本地缓存。 14 图 45 浏览记录用例图 图 46 我的收藏用例图 (7)异步更新 访问网络比较耗时间,显示一些提示信息向用户表示本软件正在运行,并异步加载数据,更新 UI界面。 性能需求 手机 软件要有良好的用户体验 ,良好的用户体验体现在以下几个方面: (1)界面友好 用户界面要简洁直观,设计合理,方便用户操作,让用户操作起来比较舒服,并且 UI 视觉效应好。 (2)快速响应 15 快速处理用户的输入 或请求,对于需要长时间处理的部分,在其处理时可以给用户一个提示,告知用户该软件正在运行。 (3)无缝性 一个常见的无缝问题就是一个应用的后台进程(如 service 或 broadcast receiver)对某事件作出响应而弹出对话框,这看起来仿佛并无大碍,特别是当你在模拟器上单独地构建和测试你的应用时。 然而,当你的应用在真正的设备上运行,后台线程显示对话框时,你的应用当时可能没有获得用户焦点。 这就会出现你的应用会在活动的应用后面显示对话框,或者从当前应用中获得焦点并显示对话框的情况,而管论当时用户正在做什么( 如正在打电话等)。 那样的行为可能对你的应用或用户不起作用。 为了避免这些问题,你的应用应该利用适当的系统资源 ——Notification 类,来通知用户。 利用通知,你的应用可以通过在状态 条上显示一个图标来通知用户事件已经发生,而非获得焦点和打断用户 [1]。 数据需求 (1)Rss Feed 的存储,主要是腾讯和新浪数据源的存储, (2)收藏夹内容的管理,主要是对收藏内容的添加和删除操作。 (3)图片资源的缓存,将下载的图片资源存储在手机自带的内存或者存储在SDCARD 中;用户也可以清楚这些缓存资源;使用缓存 资源来节省 GPRS 流量。 (4)记录用户浏览过的内容,方便用户再次查看 安全需求 Android 安全中的一个重要的设计点是在默认的情况下应用没有权限执行对其他应用程序,操作系统或用户的有害操作。 这些操作包括读取用户的隐私数据,访问网络,保持设备活动等等,应用程序的进程是一个安全的黑盒子,在没有给它权限的时候它不能干扰其他应用程序。 第五 章 Android 数据库的设计 数据 结构组织和数据库文件的设计要根据不同的用途,使用要求等来决定数据整体组织形式等一些问题。 数据库中的数据按一定数据模型组织、描述和 存储,具有较小的重复度。 较高的数据独立性和易扩展性,并且可以再被一定范围内的各种用户共享。 在涉及数据库的软件开发中,需要根据有待解决的问题的性质、规模,以及所采 16 用的前端程序创建工具等,做出合适的数据库类型选择。 数据库及字段属性设计 本项目中的数据库设计比较简单,主要涉及两个表: mylove 和 history; Mylove主要是存储收藏的内容, history 主要存储历史浏览记录 ,这两个表的字段一样,下面介绍 history 的字段 ,如表 51 所示 : 字段说明: id 记录的 id 号, title 内容的标题, link 内容的 URL, body 内容主体。 表 51 history字段 表 属性 数据类型 允许空 主键 Id INTEGER NOT null Primary key Title TEXT Link TEXT Body TEXT Mylove 与 history 相同,就不重复介绍了。 数据库的连接 这里将介绍如何进行 Android 数据库的连接, Android 中自带的 SQLite 数据库是十分小型的数据库,这样正适合 Android 这种移动平台使用。 Android 数据库的存储位置在 data/data/项目文件夹 /databases/目录下, Android 是利用 ContentProvider 作为内容提供商, SQLiteOpenHelper 数据库帮助类来进行对数据库的创建和操作。 通过()方法直接对数据库进行操作。 程序中数据库的类为 RssDB extend SQLiteOpenHelper(继承关系)。 数据库创建 Android 提供了标准的数据库创建方式,继承 SQLiteOpenHelper,实现 onCreate和 onUpgrade 两个方法 ,有个好处就是便于数据库版本的升级,连接数据库的算法如下 : public RssDB(Context context) { //创建数据库 super(context, DB_NAME, null, DB_VERTION)。 } public void onCreate(SQLiteDatabase db) 17 { //类创建是调用,在这里主要创建 table } public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { //版本升级时调用 } 数据库创建不成功会抛出 FileNodFindException 异常。 数据库操作 打开数据库操作: db = (); this 表示 RSSDB 执行 sql 语句 : (sql)。基于android平台的rss阅读器的设计与开发
相关推荐
一种是显式的 Intent,即在构造 Intent 对象时就指定接收者,这种方式与普通的函数调用类似,只是复用的粒度( Activity/Service)有所差异;另一种是隐式 Intent,即 Intent 的发送者在构造 Intent 对象时,并不知道也不关心接收者是谁,这种方式与函数调用差别比较大,有利于降低发送者和接收者之间的耦合。 通常一个每个 Activity 的代码, java
oriented architecture, SOA) 和 Web 应用程序。 Java ME( Java Platform, Micro Edition)。 这个版本以前称为 J2ME。 Java ME 为在移动 设备和嵌入式设备(比如手机、 PDA、 电视机顶盒 和打印机)上运行的应用程序提供一个健壮且灵活的环境。 Java ME 包括灵活的用户界面、健壮的安全模型、许多内置的网络协议以及对
S QLite 以及建立 O/R 模型进行数据访问。 在系统实现部分,本文详细讨论了系统的类和系统分层,描述了系统的活动流程,以及界面设计,尤其在优化手指操作和重力感应自适应等方面的实现细节。 参考文献: [1]李刚 .疯狂 Java 讲义 [M].电子工业出版社 . 202091 [2]李刚 .疯狂 Android 讲义 [M].电子工业出版社 . 202091 [3]徐娜子 .Android
解未 来 移 动 网 络 的 发 展 趋势 ,更好的适应 时代需求。 研究的方法及内容 本 软 件 设计严 格按照 软 件工程的 开发过 程 进 行 规 划,保 证 系 统 的 稳 定性、可移植性。 本 课题 以 java 语言为基础, 综 合利用 Eclipse 开发 工具和 Android 平台提供的 SDK 工具包进行开发。 具体研究内容包括: ⑴ 数据源的选取。 包括选择数据源的格式
ebkit,数据库 SQLite,让你可轻易开发出来媲美于桌面应用复杂度的手机软件。 ,同时可以直接使用 Google很 1 天津工业大学 2020届本科生毕业设计(论文) 多在线服务。 Eclipse的完整开发环境,模拟器,文档,帮助,示例 将极大推动 Android快速的推广和发展。 基于 Android 众多的优点,围绕 Android 形成了一个移动手机联盟,主要的手机厂商几乎全部在列
器 ( Activity Manager) 对应用程序基本元素 Activity的管理。 窗口管理器 ( Window Manager) 对所有窗口的管理,如对话框( Dialog)等等。 包管理器 ( Package Manager) 对 Android应用程序( apk包)的管理,包括系统本地自带的应用以及第三方应用。 3) 系统运行库层