国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于 Android 的 RSS 閱讀器的設(shè)計(jì)與實(shí)現(xiàn)

2012-04-29 12:01:39鄭巨潔朱響斌
電腦知識(shí)與技術(shù) 2012年34期
關(guān)鍵詞:閱讀器

鄭巨潔 朱響斌

摘要:RSS是移動(dòng)互聯(lián)網(wǎng)時(shí)代實(shí)現(xiàn)信息共享的一種簡(jiǎn)便方式,通過RSS閱讀器可以高效快捷地閱讀獲取信息。文中首先概要介紹了RSS技術(shù),然后較為詳細(xì)地介紹與討論了Android平臺(tái)下RSS閱讀器的設(shè)計(jì)方案。

關(guān)鍵詞:Android;RSS;XML;閱讀器

中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2012)34-8183-04

移動(dòng)互聯(lián)網(wǎng)的迅速發(fā)展,使用戶面臨著“信息冗余”與“信息過載”難題。RSS作為一種新型的信息服務(wù)方式,具有信息定制、信息推送和信息聚合的優(yōu)勢(shì),使得用戶可以在無需主動(dòng)訪問情形之下即可通過主動(dòng)的信息推送從而知曉新聞信息,極大方便用戶獲取信息的效率。[1]

同時(shí),隨著以Android/iPhone為標(biāo)志的移動(dòng)互聯(lián)網(wǎng)的興起,基于Android的RSS客戶端能夠突破碎片化的限制,實(shí)現(xiàn)了在任何時(shí)間、任何地點(diǎn)獲取最新新聞?dòng)嵪⒌男枨?。使用戶及時(shí)獲取自己定制的最新信息,并有選擇地進(jìn)行高效閱讀,從而給用戶節(jié)約了大量寶貴的時(shí)間。[2]

1RSS技術(shù)概述

RSS由于其不同的技術(shù)源頭,因此不同的技術(shù)團(tuán)隊(duì)對(duì)其有不同的解釋,ReallySimpleSyndication(真正簡(jiǎn)易的聚合)、RDFSiteSummary(RDF站點(diǎn)摘要)或者RichSiteSummary(豐富站點(diǎn)摘要)。[3]

一個(gè)符合RSS語法規(guī)范的XML數(shù)據(jù)文件被稱為RSSFeed,該文件一般以rss或xml作為后綴名。RSSFeed一般由一個(gè)元素及其子元素組成。其中根元素為,其必備屬性version表明當(dāng)前文檔遵循的RSS規(guī)范。元素則包含了此頻道的所有信息和內(nèi)容,頻道中的每條新聞?dòng)胕tem來標(biāo)注。根據(jù)語法規(guī)范規(guī)定,頻道中可以含有多個(gè)子元素。子元素包含,<link/>,<description>三個(gè)必備子元素和若干定義的可選子元素。</p><p>2系統(tǒng)設(shè)計(jì)</p><p>設(shè)計(jì)RSS閱讀器時(shí)主要有兩種可選方案:</p><p>方案一RSS閱讀器本地不存儲(chǔ)任何RSSFeed以及其所包含的相應(yīng)元信息以及新聞條目。當(dāng)用戶需要閱讀信息時(shí),app即時(shí)通過網(wǎng)絡(luò)下載RSSFeedXML文件并對(duì)其進(jìn)行解析,這種方案比較明顯的缺點(diǎn)是對(duì)已手機(jī)移動(dòng)網(wǎng)絡(luò)要求高與耗費(fèi)大。</p><p>方案二RSS閱讀器不存儲(chǔ)RSSFeed,但會(huì)對(duì)通過網(wǎng)絡(luò)獲取的RSSFeed做本地的數(shù)據(jù)持久化處理。該方案顯著相應(yīng)于方案一的優(yōu)點(diǎn)是用戶可以方便的同時(shí)閱讀當(dāng)天以及更早時(shí)期的信息,而且由于手機(jī)的網(wǎng)絡(luò)環(huán)境限制,此方案的最大便利之處是用戶可以實(shí)現(xiàn)節(jié)省流量的離線閱讀與標(biāo)記。</p><p>2.1數(shù)據(jù)持久化</p><p>此客戶端的數(shù)據(jù)持久化以Android原生SQLite數(shù)據(jù)庫(kù)為驅(qū)動(dòng)。如圖1所示,存儲(chǔ)RSSFeed信息主要有兩個(gè)數(shù)據(jù)表,即左側(cè)的articles數(shù)據(jù)表與右側(cè)的feeds數(shù)據(jù)表。其中feeds數(shù)據(jù)表存儲(chǔ)用戶訂閱的RSSfeed的元信息,articles數(shù)據(jù)表存儲(chǔ)用戶訂閱的RSSFeed其下的所有新聞item,兩數(shù)據(jù)表之間通過唯一相同的表段feed_id相互關(guān)聯(lián),即articles數(shù)據(jù)表中的feed_id表明此新聞信息所從屬的相應(yīng)RSSFeed。其中,feed_id與article_id字段分別作為各自數(shù)據(jù)表的索引主鍵。</p><p>2.2RSSFeed文件的解析</p><p>對(duì)RSSFeedXML進(jìn)行解析是實(shí)現(xiàn)RSS應(yīng)用的前提。常用的解析方式如下有兩種[4]:</p><p>1)DOM(DocumentObjectModel)解析方式。DOM解析方式是一種基于樹的解析方式,是將文檔構(gòu)造為樹形結(jié)構(gòu),能夠方便地對(duì)文檔進(jìn)行遍歷、修改、搜索等操作是其主要的優(yōu)點(diǎn),但是相應(yīng)的要占用大量?jī)?nèi)存,而且解析速度漸慢。</p><p>2)SAX(SimpleAPIforXML)解析方式。SAX是一種基于事件驅(qū)動(dòng)的解析方式,在對(duì)XML文檔進(jìn)行解析時(shí),它可以只對(duì)文檔的一部分進(jìn)行解析,因此不必將整個(gè)文檔調(diào)入內(nèi)存,因此SAX解析方式相比于DOM解析方式的最明顯優(yōu)點(diǎn)是其內(nèi)存消耗小,而且解析要相應(yīng)更高效。</p><p>由于此客戶端是基于資源有限的智能手機(jī)平臺(tái),因此在此設(shè)計(jì)采用SAX解析方式。</p><p>在使用SAX處理XML文件時(shí),首先創(chuàng)建SAX解析器工廠對(duì)象SAXParserFactory,再通過工廠對(duì)象創(chuàng)建SAX解析器SAXParser,再裝載自定義ContentHandler(此處為RSSParser),最后設(shè)置URL開始解析,完整流程如圖2所示。</p><p>3系統(tǒng)實(shí)現(xiàn)</p><p>3.1RSSFeed讀取</p><p>通過RSSReader中的函數(shù)getFeed()讀取包含RSSFeedXML文件。getFeed()函數(shù)參數(shù)為RSSFeed的url地址,從url所指向的網(wǎng)頁(yè)獲取xml文件,從而開始解析的過程。</p><p>關(guān)鍵實(shí)現(xiàn)代碼如下:</p><p>在對(duì)RSSFeedXML文件進(jìn)行解析時(shí),當(dāng)掃描到<channel>標(biāo)簽時(shí),此時(shí)系統(tǒng)即會(huì)構(gòu)造生成RSSFeed對(duì)象feed,而此后掃描到的<title>,<link/>,<description>信息應(yīng)該理解為屬于RSSFeed自身的元信息。而當(dāng)掃描到<item>標(biāo)簽而且此時(shí)feed對(duì)象已經(jīng)存在時(shí),系統(tǒng)就會(huì)判定此時(shí)掃描到的單條新聞即是從屬于feed,而且會(huì)把此后掃描到的<title>,<link/>,<description>理解為屬于此新聞的元信息,而在此之后掃描到的所有新聞會(huì)構(gòu)造存儲(chǔ)到ArrayList<rssitem>對(duì)象items。從而,在掃描完成返回的feed對(duì)象里即包含了RSSFeed的元信息以及其下的所有新聞條目。</p><p></rssitem></description>

關(guān)鍵實(shí)現(xiàn)代碼如下:

3.2數(shù)據(jù)存儲(chǔ)

當(dāng)用戶需要訂閱相應(yīng)RSSFeed,調(diào)用RSSManager的函數(shù)subscribe()即可對(duì)RSSFeed進(jìn)行解析,在其中通過NewsDatabase中的函數(shù)insertFeed()與insertArticle()把相應(yīng)RSSFeed元信息以及其中的新聞items插入到數(shù)據(jù)庫(kù)中。

關(guān)鍵實(shí)現(xiàn)代碼如下:

在數(shù)據(jù)存儲(chǔ)完成后,當(dāng)客戶端需要獲取相應(yīng)新聞?dòng)嵪r(shí),即只要調(diào)用RSSManager的函數(shù)getFeedById(),其參數(shù)feedId即為新聞信息所屬的RSSFeed在數(shù)據(jù)表中的id。從而即可以實(shí)現(xiàn)此RSS閱讀器最適應(yīng)于移動(dòng)平臺(tái)的離線閱讀特性。

3.3UI設(shè)計(jì)

此RSS閱讀器的界面主要包括三個(gè)Activity,而其中Activity與一般的實(shí)現(xiàn)方式不同的是采用Fragment進(jìn)行動(dòng)態(tài)填充加載。三個(gè)Activity分別為用戶訂閱的RSSFeed列表Activity,RSSFeed其下所有新聞的列表Activity與新聞的閱讀界面Activity。

在RSSFeed列表中,會(huì)簡(jiǎn)略顯示用戶已訂閱的RSSFeed的元信息,包括RSSFeed的標(biāo)題與描述,當(dāng)用戶點(diǎn)擊相應(yīng)RSSFeed時(shí),系統(tǒng)就會(huì)切換到RSSFeed文章詳細(xì)列表中,其中會(huì)詳細(xì)顯示著各新聞的基本元信息與概述。如果用戶想要閱讀相應(yīng)的新聞,只要點(diǎn)擊相應(yīng)位置即可,就可以進(jìn)入到簡(jiǎn)潔的閱讀界面。

圖3-圖5是本客戶端運(yùn)行在中興u880其上時(shí)的工作截圖。

圖3 RSSFeed列表 圖4 RSSFeed文章列表 圖5 信息閱讀界面

當(dāng)然由于UI設(shè)計(jì)的水平有限,此客戶端的美觀性還有很多可改進(jìn)之處。

4結(jié)束語

本設(shè)計(jì)實(shí)現(xiàn)了基于Android的RSS閱讀器,并討論了RSS閱讀器實(shí)現(xiàn)的關(guān)鍵技術(shù)。該RSS閱讀器界面友好,操作簡(jiǎn)單,用戶可以聚合所關(guān)注的RSS資源,從而即時(shí)了解相關(guān)感興趣網(wǎng)站的新聞?dòng)嵪⒏?,大大?jié)約了時(shí)間。

參考文獻(xiàn):

[1]王秀慧.RSS在線閱讀器設(shè)計(jì)與實(shí)現(xiàn)[J].電腦編程技術(shù)與維護(hù),2009(4):71-72.

[2]劉洋.RSS掀起手機(jī)閱讀的革命[J].中國(guó)新通信,2006(6):79-80.

[3]張會(huì)娥,張智雄,林穎,等.基于RSS的科技信息聚合系統(tǒng)的設(shè)計(jì)和實(shí)現(xiàn)[J].現(xiàn)代圖書情報(bào)技術(shù),2005(7).

[4]李文江,李興春.基于RSS2.0的新聞信息提取與發(fā)布[J].重慶文理學(xué)院學(xué)報(bào),2008,27(6).

猜你喜歡
閱讀器
基于反向權(quán)重的閱讀器防碰撞算法
一種高效的RFID系統(tǒng)冗余閱讀器消除算法
一種RFID網(wǎng)絡(luò)系統(tǒng)中消除冗余閱讀器的高效算法
盲人閱讀器
共和县| 安义县| 卢氏县| 西林县| 汉川市| 巍山| 永修县| 黄龙县| 内黄县| 龙胜| 泰州市| 砀山县| 繁昌县| 大渡口区| 碌曲县| 龙井市| 平舆县| 抚州市| 漳平市| 安义县| 淮北市| 凤阳县| 饶阳县| 金堂县| 惠东县| 郁南县| 普兰店市| 清原| 云梦县| 台东市| 镇赉县| 栾川县| 峨眉山市| 三明市| 清水县| 黄石市| 普兰县| 民乐县| 永善县| 丰顺县| 清丰县|