基于Android平臺(tái)的Rss閱讀器的設(shè)計(jì)與開發(fā)_第1頁
基于Android平臺(tái)的Rss閱讀器的設(shè)計(jì)與開發(fā)_第2頁
基于Android平臺(tái)的Rss閱讀器的設(shè)計(jì)與開發(fā)_第3頁
基于Android平臺(tái)的Rss閱讀器的設(shè)計(jì)與開發(fā)_第4頁
基于Android平臺(tái)的Rss閱讀器的設(shè)計(jì)與開發(fā)_第5頁
已閱讀5頁,還剩34頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于android平臺(tái)的rss閱讀器的設(shè)計(jì)與開發(fā)摘要:隨著3g時(shí)代的到來,移動(dòng)用戶通過gprs可以高速享受intenet提供的服務(wù)。本軟件通過rss站點(diǎn)方便用戶迅速獲取感興趣的內(nèi)容。本論文采用android開源系統(tǒng)技術(shù),利用java語言和eclipse,結(jié)合目前使用廣泛的rss(really simple syndication),以及目前廣泛使用的html文件解析和分析工具h(yuǎn)tmlparser對(duì)rss閱讀器進(jìn)行編寫。使用htmlparse解析html文件來獲取指定內(nèi)容能節(jié)省gprs流量。本軟件利用android提供的各種組件對(duì)界面進(jìn)行設(shè)計(jì),達(dá)到很好的用戶體驗(yàn)。關(guān)鍵詞:android;rss;

2、htmlparser;html;閱讀器目 錄第一章 緒論41.1課題的研究意義41.2相近研究課題的特點(diǎn)及優(yōu)缺點(diǎn)分析41.3本文的主要工作5第二章 android的架構(gòu)分析52.1 android特征52.2 android架構(gòu)62.2.1 關(guān)鍵應(yīng)用程序72.2.2 應(yīng)用程序框架72.2.3 c/c+函數(shù)庫(kù)72.2.4 java程序運(yùn)行環(huán)境72.2.5 linux內(nèi)核72.3 android應(yīng)用的構(gòu)成和工作機(jī)制72.3.1 activity82.3.2 intent receiver92.3.3 service92.3.4 content provider102.3.5 rss解析剖析102.

3、4 本章小結(jié)11第三章 開發(fā)環(huán)境介紹及構(gòu)建11第四章 需求分析124.1功能需求124.2性能需求154.3數(shù)據(jù)需求164.4安全需求16第五章 android數(shù)據(jù)庫(kù)的設(shè)計(jì)165.1 數(shù)據(jù)庫(kù)及字段屬性設(shè)計(jì)175.2數(shù)據(jù)庫(kù)的連接175.2.1數(shù)據(jù)庫(kù)創(chuàng)建175.2.2 數(shù)據(jù)庫(kù)操作18第六章 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)186.1 rss資源的收集和分析186.2 系統(tǒng)界面的設(shè)計(jì)226.2.1 主界面的實(shí)現(xiàn)226.2.2主界面中子界面的實(shí)現(xiàn)236.3 資源文件的解析276.3.1本地xml文件的解析276.3.2網(wǎng)絡(luò)文件解析286.4 數(shù)據(jù)存儲(chǔ)316.4.1 sharedperference316.4.2 fil

4、e存儲(chǔ)方式316.4.3 sqlitedatabase數(shù)據(jù)庫(kù)316.4.4 android中application的應(yīng)用316.4.5數(shù)據(jù)存儲(chǔ)在項(xiàng)目中的應(yīng)用326.5 內(nèi)容界面功能的實(shí)現(xiàn)32第七章 結(jié)論33參 考 文 獻(xiàn)34第一章 緒論1.1 課題的研究意義隨著移動(dòng)通信的發(fā)展以及互聯(lián)網(wǎng)向移動(dòng)終端的普及,網(wǎng)絡(luò)和用戶對(duì)移動(dòng)終端的要求越來越高,3g時(shí)代的到來為移動(dòng)終端用戶帶來了更快的數(shù)據(jù)傳輸速率。隨著3g網(wǎng)絡(luò)的使用,移動(dòng)終端不再僅是通訊網(wǎng)絡(luò)的終端,還將成為互聯(lián)網(wǎng)的終端。隨著3g時(shí)代的到來,手機(jī)上網(wǎng)越來越方便,而網(wǎng)上充斥著各種各樣的信息,讓網(wǎng)民們很頭疼,很難找到自己感興趣的新聞,而且中國(guó)手機(jī)流量費(fèi)用的

5、高昂,在眾多網(wǎng)頁中尋找自己感興趣的信息浪費(fèi)了過多沒必要損失的流量。rss為網(wǎng)民提供新聞標(biāo)題和摘要,它的作用就像一道篩子,為網(wǎng)民過濾了網(wǎng)站的大量“無用”信息,節(jié)省大量的流量,使網(wǎng)民直達(dá)自己所需的網(wǎng)頁。網(wǎng)民可通過rss閱讀器進(jìn)行閱讀,而不必每次到目標(biāo)網(wǎng)站去尋找最新信息。提供rss服務(wù)的網(wǎng)站,可以節(jié)省用戶訪問目標(biāo)網(wǎng)站的時(shí)間。便捷和主動(dòng)傳遞,這正是rss訂閱最有價(jià)值的地方。1.2 相近研究課題的特點(diǎn)及優(yōu)缺點(diǎn)分析rss閱讀器按照其運(yùn)行環(huán)境基本可以分為三類。 第一類大多數(shù)閱讀器是運(yùn)行在計(jì)算機(jī)桌面上的,通過所訂閱網(wǎng)站的新聞供應(yīng),可自動(dòng)、定時(shí)地更新新聞標(biāo)題。在該類閱讀器中,有awasu、feeddemon和r

6、ssreader這三款流行的閱讀器,都提供免費(fèi)試用版和付費(fèi)高級(jí)版。國(guó)內(nèi)最近也推出了幾款rss閱讀器:周博通,看天下,博閱。第二類新聞閱讀器通常是內(nèi)嵌于已在計(jì)算機(jī)中運(yùn)行的應(yīng)用程序中。例如,newsgator內(nèi)嵌在微軟的outlook中,所訂閱的新聞標(biāo)題位于outlook的收件箱文件夾中。另外,pluck內(nèi)嵌在internet explorer瀏覽器中。第三類則是在線的web rss閱讀器,其優(yōu)勢(shì)在于不需要安裝任何軟件就可以獲得rss閱讀的便利,并且可以保存閱讀狀態(tài),推薦和收藏自己感興趣的文章。這些rss閱讀器都是基于pc機(jī)的,而基于android平臺(tái)的rss閱讀器現(xiàn)在還是很少并且這些rss閱讀器

7、基本都是解析rss feed后,獲取到內(nèi)容的鏈接后啟動(dòng)android中的瀏覽器應(yīng)用進(jìn)行跳轉(zhuǎn),這樣瀏覽器根據(jù)鏈接下載對(duì)應(yīng)的內(nèi)容,頁面中相應(yīng)的一些內(nèi)容和圖片對(duì)與用戶來說并沒有什么實(shí)際的用處,永不并不希望看到這些無關(guān)的內(nèi)容,這些無關(guān)的內(nèi)容相應(yīng)的也浪費(fèi)了很多gprs流量,而中國(guó)目前gprs流量的價(jià)格還是比較高,這樣無疑給用戶造成了很到的損失。1.3 本文的主要工作本文首先給出了系統(tǒng)的研究背景,對(duì)當(dāng)前rss的發(fā)展現(xiàn)狀做了簡(jiǎn)單的介紹。進(jìn)而詳細(xì)的分析了android的特征、架構(gòu)以及android應(yīng)用的構(gòu)成和工作機(jī)制。本文詳細(xì)的提出了軟件的架構(gòu),以及解析rss方案;采用java開源的jar包對(duì)html文件進(jìn)行

8、分析和獲取圖片和文字信息;對(duì)各個(gè)界面的布局和實(shí)現(xiàn)方式進(jìn)行詳細(xì)說明;對(duì)數(shù)據(jù)庫(kù)設(shè)計(jì)模塊進(jìn)行了詳盡的需求分析,經(jīng)分析得到數(shù)據(jù)庫(kù)設(shè)計(jì)模塊,它主要完成用戶對(duì)已經(jīng)獲取的內(nèi)容的存儲(chǔ),刪除和查詢操作;運(yùn)用android提供的各種組件設(shè)計(jì)和實(shí)現(xiàn)很好的ui效果,實(shí)現(xiàn)很好的用戶體驗(yàn);詳細(xì)介紹了該軟件的性能優(yōu)化。第二章 android的架構(gòu)分析android是一個(gè)移動(dòng)設(shè)備的軟件平臺(tái),是由linux+java構(gòu)成的開源軟件,它提供包括sdk、key apps、middleware、linux kernel四個(gè)部分在內(nèi)的全套手機(jī)軟件方案。它開放了基于linux內(nèi)核以上的開發(fā)工具,從而保證了內(nèi)容的可移植性和多樣性。andr

9、oid平臺(tái)為我們開發(fā)應(yīng)用程序提供了一套很好的框架,我們可以在這個(gè)平臺(tái)的基礎(chǔ)上開發(fā)不同的應(yīng)用程序,也可以開發(fā)新的組件供應(yīng)用程序調(diào)用1。2.1 android特征dalvik虛擬:android采用的java虛擬機(jī)是自主開發(fā)的代號(hào)為dalvik的虛擬機(jī)技術(shù),在保證api方面兼容的同時(shí)dalvik針對(duì)移動(dòng)手機(jī)進(jìn)行了大幅優(yōu)化,占用資源更小,運(yùn)行效率更高。內(nèi)嵌瀏覽器:基于開源的瀏覽器網(wǎng)頁排版引擎webkit。優(yōu)化的圖形:強(qiáng)大的自定義二維圖形庫(kù)?;趏pengl es 1o標(biāo)準(zhǔn)的3d圖形功能,在移動(dòng)3d開發(fā)中有著至關(guān)重要的地位。sqlite數(shù)據(jù)庫(kù):sqlitet提供結(jié)構(gòu)化的數(shù)據(jù)存儲(chǔ)。它是一款輕型免費(fèi)的且開

10、源的數(shù)據(jù)庫(kù),它的設(shè)計(jì)目標(biāo)是嵌入式的,它占用的資源非常低、需要的內(nèi)存空間少、處理速度比較快和支持事務(wù)處理功能等。多媒體支持:支持各種通用的音視頻和靜態(tài)圖像格式,如mp3、jpg、png等。open core是android多媒體框架的核心,所有android平臺(tái)的音視頻采集,播放的操作都是通過它來實(shí)現(xiàn)的。通過open core,程序員可以方便快速的開發(fā)出想要的多媒體應(yīng)用程序。gsm技術(shù):(依賴硬件)global system for mobile communications,全球移動(dòng)通訊系統(tǒng),俗稱“全球通”,是第二代移動(dòng)通信技術(shù),其開發(fā)el的是讓傘球各地可以共同使用一個(gè)移動(dòng)電話網(wǎng)絡(luò)標(biāo)準(zhǔn),讓用戶

11、使_一部手機(jī)就能行遍全球。藍(lán)牙,edge,3g,and wifi是一種短距離的無線連接技術(shù),在短距離內(nèi)可以實(shí)現(xiàn)話音和數(shù)據(jù)的無線傳輸。edge(enhailced data rate for gsm evolution),是增強(qiáng)型數(shù)據(jù)速率gsm演進(jìn)技術(shù)。camera,gps,compass,and accelerometer:(依賴硬件)gps(globalpositioning system)itti馴全球定位系統(tǒng)。它是一個(gè)由覆蓋全球的24顆1j星組成的衛(wèi)星系統(tǒng)。compass是個(gè)開放源代碼的java搜索引擎框架。強(qiáng)大的開發(fā)環(huán)境:包括一個(gè)設(shè)備模擬器,調(diào)試工具,內(nèi)存和性能檢測(cè),以及eclipse

12、ide的開發(fā)插件。eclipse是個(gè)集成開發(fā)環(huán)境2。2.2 android架構(gòu)android的架構(gòu)是linux內(nèi)核、c/c+函數(shù)庫(kù)、dalvik虛擬機(jī)、應(yīng)用框架以及關(guān)鍵應(yīng)用程序構(gòu)成的,如圖2-1。通過編譯基于框架的應(yīng)用程序可以降低開發(fā)負(fù)荷。應(yīng)用軟件原則上是在dalvik vm上運(yùn)行的。圖2-1 android架構(gòu)圖32.2.1 關(guān)鍵應(yīng)用程序android平臺(tái)內(nèi)包含一些關(guān)鍵應(yīng)用程序,如郵件收發(fā)客戶端程序、短信收發(fā)程序、日歷和網(wǎng)頁瀏覽器等,開發(fā)者可以在其平臺(tái)上開發(fā)更多有特色的應(yīng)用程序。開發(fā)語言是java。2.2.2 應(yīng)用程序框架android應(yīng)用程序的開發(fā)基于框架和組件。android本身已在其框

13、架中提高了許多的組件供應(yīng)用程序調(diào)用,當(dāng)然開發(fā)者也開放新的組件,并將組件放入應(yīng)用程序框架中,以供自己和其它應(yīng)用程序調(diào)用。2.2.3 c/c+函數(shù)庫(kù)android應(yīng)用程序框架之下是一套c/c+函數(shù)庫(kù),它們服務(wù)于android應(yīng)用程序組件,其功能通過組件間接提供給開發(fā)者。這些函數(shù)庫(kù)包括:標(biāo)準(zhǔn)c函數(shù)庫(kù)、媒體功能庫(kù)、瀏覽器引擎、2d和3d圖形庫(kù)、基于web應(yīng)用的的安全協(xié)議ssl、用于點(diǎn)陣和矢量字體渲染的freetype以及sqlite引擎等。2.2.4 java程序運(yùn)行環(huán)境android的java程序運(yùn)行環(huán)境包含一組java核心函數(shù)庫(kù)及dalvik虛擬機(jī),它們有效地優(yōu)化了java程序的運(yùn)行過程。所有的a

14、ndroid應(yīng)用都運(yùn)行在它自己的進(jìn)程里,該進(jìn)程是一個(gè)dalvik虛擬機(jī)的實(shí)例,dalvik被設(shè)計(jì)成能在一臺(tái)設(shè)備上高效的運(yùn)行多個(gè)虛擬機(jī)實(shí)例。dalvik虛擬機(jī)的可執(zhí)行文件被封裝成dalvik可執(zhí)行格式(.dex)。這是被優(yōu)化過的最小內(nèi)存依賴的格式。java編譯器(dx工具)將注冊(cè)了的和運(yùn)行時(shí)用到的類編譯成.dex格式。dalvik虛擬機(jī)依賴于底層linux內(nèi)核提供的功能,如線程機(jī)制,和內(nèi)存管理機(jī)制等。2.2.5 linux內(nèi)核android系統(tǒng)平臺(tái)是基于優(yōu)化了的linux內(nèi)核,是其系統(tǒng)平臺(tái)的核心。它提供諸如內(nèi)存管理、進(jìn)程管理、設(shè)備驅(qū)動(dòng)等服務(wù),同時(shí)也是手機(jī)軟硬件的連接層,提供了一個(gè)屏蔽層用于屏蔽硬

15、件和上層軟件。2.3 android應(yīng)用的構(gòu)成和工作機(jī)制對(duì)于一個(gè)android應(yīng)用程序來說,是由activity、 intent receiver 、service、content provider四部分組成,但并不是每一個(gè)android應(yīng)用程序都必須由這四部分組成。在應(yīng)用程序中使用時(shí),需要在配置文件androidmainfestxml中進(jìn)行配置。這個(gè)配置文件是每個(gè)android應(yīng)用程序所必需的,用于定義應(yīng)用程序的組件、組件的功能以及必要條件等。2.3.1 activityactivity是構(gòu)成應(yīng)用程序中最重要的構(gòu)造塊, 在android應(yīng)用程序中,幾乎都是通過activity來與用戶進(jìn)行交互

16、,所以activity主要負(fù)責(zé)的就是創(chuàng)建與用戶進(jìn)行交互的顯示窗口,你可以在這些窗口里通過調(diào)用setcontentview(view)方法來顯示你自己的用戶界面。1. 活動(dòng)生命周期活動(dòng)(activity)在系統(tǒng)中以活動(dòng)棧的形式進(jìn)行管理。當(dāng)一個(gè)新的活動(dòng)啟動(dòng)后,被放到了棧項(xiàng),成為了運(yùn)行活動(dòng),而新活動(dòng)之前的活動(dòng)在活動(dòng)棧里總位于新活動(dòng)之下,直到新的活動(dòng)退出才重新回到前臺(tái)。 圖2-2 activity狀態(tài)變換路徑圖4從圖2-2可以看出,activity有三個(gè)關(guān)鍵的循環(huán):(1)活動(dòng)的整個(gè)生命期:從首次調(diào)用oncreate(bundle)開始,到最終調(diào)用ondestroyo結(jié)束。在oncreate()中進(jìn)行所

17、有初始化,在ondestroyo時(shí)進(jìn)行清理工作,釋放資源。(2)活動(dòng)的可見生命期:從調(diào)用onstart()開始,到onstop()被調(diào)用為止。在這段時(shí)間內(nèi),即使活動(dòng)不與用戶進(jìn)行交互,用戶也可以在屏幕上看到它。在這兩個(gè)方法調(diào)用之間,可以維護(hù)活動(dòng)顯示給用戶的資源。onstart()和onstop()方法可以多次調(diào)用,因?yàn)榛顒?dòng)隨時(shí)可以在可見和隱藏之間進(jìn)行轉(zhuǎn)換。(3)活動(dòng)的后臺(tái)生命期:從調(diào)用onresume()開始,到onpause()被調(diào)用為止。在這段時(shí)間內(nèi)活動(dòng)處于其它所有活動(dòng)之前,并與用戶進(jìn)行交互。一個(gè)活動(dòng)可以不斷在resumed狀態(tài)和paused狀態(tài)之間變換4。2. 活動(dòng)之間的切換android

18、使用了intent類來實(shí)現(xiàn)活動(dòng)之間的切換工作。intent負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作涉及的數(shù)據(jù)和附加數(shù)據(jù)進(jìn)行描述。根據(jù)intent的描述,負(fù)責(zé)找到對(duì)應(yīng)的組件,將intent傳遞給調(diào)用的組件并完成組件的調(diào)用。因此,intent起著一種媒體中介的作用,專門提供組件互相調(diào)用的相關(guān)信息,實(shí)現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。在應(yīng)用中,我們可以以兩種形式來使用intent:直接intent,指定了component屬性的intent,通過指定具體的組件類,通知應(yīng)用啟動(dòng)對(duì)應(yīng)的組件。間接intent,沒有指定comonent屬性的intent,則需要包含足夠的信息,這樣系統(tǒng)才能根據(jù)這些信息,在所有的可用組件

19、中,確定滿足此intent的組件。2.3.2 intent receiverintent receivert是用于對(duì)外部事件的響應(yīng),當(dāng)外部事件發(fā)生時(shí),會(huì)使用notificationmanager通知用戶。當(dāng)一個(gè)intent receiver被觸發(fā)時(shí),系統(tǒng)會(huì)在需要的時(shí)候啟動(dòng)對(duì)應(yīng)的應(yīng)用程序。如在本系統(tǒng)中,當(dāng)用戶正在其它界面進(jìn)行操作時(shí),有好友發(fā)送消息過來,就會(huì)以通知的形式發(fā)送到當(dāng)前界面的正上方來通知用戶。各種應(yīng)用還可以通過使用contextbroadcastintent()將它們的intent receiver廣播給其它的應(yīng)用程序,實(shí)現(xiàn)應(yīng)用之間的通訊。2.3.3 serviceservice是提供連

20、續(xù)信息的應(yīng)用程序。它是運(yùn)行于應(yīng)用程序后臺(tái)的服務(wù),在用戶進(jìn)行其它活動(dòng)的時(shí)候,這個(gè)服務(wù)將一直運(yùn)行在基于android平臺(tái)的即時(shí)通訊系統(tǒng)的研究與實(shí)現(xiàn)后臺(tái)直到用戶停止該服務(wù)或服務(wù)運(yùn)行結(jié)束。本系統(tǒng)客戶端擴(kuò)展功能的音樂播放就是采用service來進(jìn)行設(shè)計(jì)和開發(fā)的,使用戶可以邊聊天邊聽音樂。2.3.4 content providercontent provider應(yīng)用程序能夠?qū)⑺鼈兊臄?shù)據(jù)保存到文件、sql數(shù)據(jù)庫(kù)和其它的存儲(chǔ)設(shè)備中。當(dāng)應(yīng)用程序需要使用存儲(chǔ)設(shè)備中的數(shù)據(jù)時(shí),可以使用content provider來完成。使用content provider能夠靈活的替換底層使用的存儲(chǔ)設(shè)備,使開發(fā)者可以專著于應(yīng)用

21、邏輯的開發(fā),不用考慮底層存儲(chǔ)設(shè)備的細(xì)節(jié),從而使應(yīng)用系統(tǒng)具有良好的數(shù)據(jù)2.3.5 rss解析剖析在android平臺(tái)上可以使用simple api for xml(sax)、document object model(dom)和android附帶的pull解析器解析xml文件。 (1)使用sax讀取xml文件 sax是一個(gè)解析速度快并且占用內(nèi)存少的xml解析器,非常適合用于android等移動(dòng)設(shè)備。sax解析xml文件采用的是事件驅(qū)動(dòng),也就是說,它并不需要解析完整個(gè)文檔,在按內(nèi)容順序解析文檔的過程中,sax會(huì)判斷當(dāng)前讀到的字符是否合法xml語法中的某部分,如果符合就會(huì)觸發(fā)事件。所謂事件,其實(shí)就是

22、一些回調(diào)(callback)方法,這些方法(事件)定義在contenthandler接口5。下面是一些contenthandler接口常用的方法: startdocument()當(dāng)遇到文檔的開頭的時(shí)候,調(diào)用這個(gè)方法,可以在其中做一些預(yù)處理的工作。 enddocument()和上面的方法相對(duì)應(yīng),當(dāng)文檔結(jié)束的時(shí)候,調(diào)用這個(gè)方法,可以在其中做一些善后的工作。  startelement(string namespaceuri, string localname, string qname, attributes atts)當(dāng)讀到一個(gè)開始標(biāo)簽的時(shí)候,會(huì)觸發(fā)這個(gè)方法。namespaceuri就

23、是命名空間,localname是不帶命名空間前綴的標(biāo)簽名,qname是帶命名空間前綴的標(biāo)簽名。通過atts可以得到所有的屬性名和相應(yīng)的值。要注意的是sax中一個(gè)重要的特點(diǎn)就是它的流式處理,當(dāng)遇到一個(gè)標(biāo)簽的時(shí)候,它并不會(huì)紀(jì)錄下以前所碰到的標(biāo)簽,也就是說,在startelement()方法中,所有你所知道的信息,就是標(biāo)簽的名字和屬性,至于標(biāo)簽的嵌套結(jié)構(gòu),上層標(biāo)簽的名字,是否有子元屬等等其它與結(jié)構(gòu)相關(guān)的信息,都是不得而知的,都需要你的程序來完成。這使得sax在編程處理上沒有dom來得那么方便。 endelement(string uri, string localname, string name)

24、這個(gè)方法和上面的方法相對(duì)應(yīng),在遇到結(jié)束標(biāo)簽的時(shí)候,調(diào)用這個(gè)方法。 characters(char ch, int start, int length)這個(gè)方法用來處理在xml文件中讀到的內(nèi)容,第一個(gè)參數(shù)用于存放文件的內(nèi)容,后面兩個(gè)參數(shù)是讀到的字符串在這個(gè)數(shù)組中的起始位置和長(zhǎng)度,使用new string(ch,start,length)就可以獲取內(nèi)容。(2)使用dom讀取xml文件 除了可以使用 sax解析xml文件,大家也可以使用熟悉的dom來解析xml文件。 dom解析xml文件時(shí),會(huì)將xml文件的所有內(nèi)容讀取到內(nèi)存中,然后允許您使用dom api遍歷xml樹、檢索所需的數(shù)據(jù)。使用dom操作

25、xml的代碼看起來比較直觀,并且,在某些方面比基于sax的實(shí)現(xiàn)更加簡(jiǎn)單。但是,因?yàn)閐om需要將xml文件的所有內(nèi)容讀取到內(nèi)存中,所以內(nèi)存的消耗比較大,特別對(duì)于運(yùn)行android的移動(dòng)設(shè)備來說,因?yàn)樵O(shè)備的資源比較寶貴,所以建議還是采用sax來解析xml文件,當(dāng)然,如果xml文件的內(nèi)容比較小采用dom是可行的。(3)使用pull解析器讀取xml文件 除了可以使用 sax和dom解析xml文件,大家也可以使用android內(nèi)置的pull解析器解析xml文件。 pull解析器的運(yùn)行方式與 sax 解析器相似。它提供了類似的事件,如:開始元素和結(jié)束元素事件,使用parser.next()可以進(jìn)入下一個(gè)元

26、素并觸發(fā)相應(yīng)事件。事件將作為數(shù)值代碼被發(fā)送,因此可以使用一個(gè)switch對(duì)感興趣的事件進(jìn)行處理。當(dāng)元素開始解析時(shí),調(diào)用parser.nexttext()方法可以獲取下一個(gè)text類型元素的值3。2.4 本章小結(jié)本章對(duì)android平臺(tái)的特征、架構(gòu)以及android應(yīng)用的構(gòu)成和工作機(jī)制進(jìn)行了詳細(xì)的分析。對(duì)于android應(yīng)用程序來說,主要由activity、intent receiver、service和content provider四部分組成,但并不是對(duì)于每一個(gè)應(yīng)用程序,這四部分都是必須的。activity是應(yīng)用程序中最重要的一種構(gòu)造塊,我們對(duì)其進(jìn)行了詳細(xì)的分析,包括activity的生命周

27、期以及activity之間的切換。第三章 開發(fā)環(huán)境介紹及構(gòu)建android平臺(tái)為開發(fā)者提供了源碼開放的軟件開發(fā)包( sdk) ,它包含了使用java語言開發(fā)android平臺(tái)應(yīng)用的必要工具和組件(api) 。進(jìn)行開發(fā)前先要建立合適的開發(fā)環(huán)境,其中基于java的整合型可擴(kuò)展平臺(tái)eclipse是我們的首選。搭建環(huán)境所需要的軟件:l 操作系統(tǒng):windows xp 或 linux;l 軟件包:android sdk,adt;l ide環(huán)境:eclipse ide + adt eclipse3.3以上;l jdk:java runtime environmcnt,jdk;安裝步驟:l 安裝jdk 然后

28、配置環(huán)境變量;l 安裝eclipse;l android sdk配置/安裝:首先在l 安裝android adt插件:1.打開eclipse,在導(dǎo)航菜單中選擇help-install new software。在work with中輸入 https:/dl- 然后輸入name,隨便取個(gè)有意義的,都選中安裝,完畢后重啟eclipse;2.在eclipse里配置sdk路徑,選擇windows->preferences->android,選擇android sdk的位置6。第四章 需求分析4.1功能需求rss閱讀器扮演著與用戶直接交互并且提供服務(wù)的重要角色,它需要提供良好的用戶體驗(yàn),方便

29、用戶操作,接收用戶的操作并把這些操作轉(zhuǎn)換成相應(yīng)的命令,采用用戶活動(dòng)的方式完成各個(gè)服務(wù)的邏輯流程。本軟件主要解析騰訊和新浪提供的rss reed,其功能需求主要包括以下幾方面內(nèi)容,業(yè)務(wù)流程如圖4-1所示:(1)不同view之間的切換功能用戶通過手指的左右滑動(dòng)來切換不同的視圖,方便用戶在不同視圖中查看信息和行操作。如圖4-2所示:(2)新浪rss功能根據(jù)頻道名稱解析出這個(gè)頻道所包含的內(nèi)容并記錄,在根據(jù)這些內(nèi)容鏈接網(wǎng)絡(luò),通過htmlparse的解析獲取相應(yīng)的內(nèi)容并保存;切換不同的頻道。如圖4-3所示:圖4-1 業(yè)務(wù)流程圖圖4-2 主界面用例圖圖4-3 新浪rss用例圖(3)騰訊rss功能該功能與新浪

30、rss相似,如圖4-4所示:圖4-4 騰訊rss用用例圖(4)歷史記錄瀏覽功能記錄用戶瀏覽過的內(nèi)容,以方便用戶再次查看,這樣節(jié)省gprs流量,減少用戶的損失;當(dāng)用戶不需要這些記錄的時(shí)候可以清除掉這些記錄。如圖4-5所示:(5)收藏功能當(dāng)用戶對(duì)一些文章感興趣時(shí),可以將其添加至收藏列表;當(dāng)用戶不需要某條記錄是可將其從收藏列表中刪除。如圖4-6所示:(6)本地緩存在瀏覽新聞和文章的過程中會(huì)下載圖片和文字內(nèi)容,將這些內(nèi)容保存值本地,在下次瀏覽同樣的內(nèi)容的時(shí)候就不用再次鏈接網(wǎng)絡(luò),直接在本地讀取就可,節(jié)省用戶的gprs流量;當(dāng)手機(jī)存儲(chǔ)空間不足時(shí)用戶可以選擇刪除這些本地緩存。圖 4-5 瀏覽記錄用例圖圖4-

31、6 我的收藏用例圖(7)異步更新訪問網(wǎng)絡(luò)比較耗時(shí)間,顯示一些提示信息向用戶表示本軟件正在運(yùn)行,并異步加載數(shù)據(jù),更新ui界面。4.2性能需求手機(jī)軟件要有良好的用戶體驗(yàn),良好的用戶體驗(yàn)體現(xiàn)在以下幾個(gè)方面:(1)界面友好用戶界面要簡(jiǎn)潔直觀,設(shè)計(jì)合理,方便用戶操作,讓用戶操作起來比較舒服,并且ui視覺效應(yīng)好。(2)快速響應(yīng)快速處理用戶的輸入或請(qǐng)求,對(duì)于需要長(zhǎng)時(shí)間處理的部分,在其處理時(shí)可以給用戶一個(gè)提示,告知用戶該軟件正在運(yùn)行。(3)無縫性一個(gè)常見的無縫問題就是一個(gè)應(yīng)用的后臺(tái)進(jìn)程(如service或broadcast receiver)對(duì)某事件作出響應(yīng)而彈出對(duì)話框,這看起來仿佛并無大礙,特別是當(dāng)你在模擬

32、器上單獨(dú)地構(gòu)建和測(cè)試你的應(yīng)用時(shí)。然而,當(dāng)你的應(yīng)用在真正的設(shè)備上運(yùn)行,后臺(tái)線程顯示對(duì)話框時(shí),你的應(yīng)用當(dāng)時(shí)可能沒有獲得用戶焦點(diǎn)。這就會(huì)出現(xiàn)你的應(yīng)用會(huì)在活動(dòng)的應(yīng)用后面顯示對(duì)話框,或者從當(dāng)前應(yīng)用中獲得焦點(diǎn)并顯示對(duì)話框的情況,而管論當(dāng)時(shí)用戶正在做什么(如正在打電話等)。那樣的行為可能對(duì)你的應(yīng)用或用戶不起作用。為了避免這些問題,你的應(yīng)用應(yīng)該利用適當(dāng)?shù)南到y(tǒng)資源notification類,來通知用戶。利用通知,你的應(yīng)用可以通過在狀態(tài)條上顯示一個(gè)圖標(biāo)來通知用戶事件已經(jīng)發(fā)生,而非獲得焦點(diǎn)和打斷用戶1。4.3數(shù)據(jù)需求(1)rss feed的存儲(chǔ),主要是騰訊和新浪數(shù)據(jù)源的存儲(chǔ),(2)收藏夾內(nèi)容的管理,主要是對(duì)收藏內(nèi)容

33、的添加和刪除操作。(3)圖片資源的緩存,將下載的圖片資源存儲(chǔ)在手機(jī)自帶的內(nèi)存或者存儲(chǔ)在sdcard中;用戶也可以清楚這些緩存資源;使用緩存資源來節(jié)省gprs流量。(4)記錄用戶瀏覽過的內(nèi)容,方便用戶再次查看4.4安全需求android安全中的一個(gè)重要的設(shè)計(jì)點(diǎn)是在默認(rèn)的情況下應(yīng)用沒有權(quán)限執(zhí)行對(duì)其他應(yīng)用程序,操作系統(tǒng)或用戶的有害操作。這些操作包括讀取用戶的隱私數(shù)據(jù),訪問網(wǎng)絡(luò),保持設(shè)備活動(dòng)等等,應(yīng)用程序的進(jìn)程是一個(gè)安全的黑盒子,在沒有給它權(quán)限的時(shí)候它不能干擾其他應(yīng)用程序。第五章 android數(shù)據(jù)庫(kù)的設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)組織和數(shù)據(jù)庫(kù)文件的設(shè)計(jì)要根據(jù)不同的用途,使用要求等來決定數(shù)據(jù)整體組織形式等一些問題。數(shù)據(jù)

34、庫(kù)中的數(shù)據(jù)按一定數(shù)據(jù)模型組織、描述和存儲(chǔ),具有較小的重復(fù)度。較高的數(shù)據(jù)獨(dú)立性和易擴(kuò)展性,并且可以再被一定范圍內(nèi)的各種用戶共享。在涉及數(shù)據(jù)庫(kù)的軟件開發(fā)中,需要根據(jù)有待解決的問題的性質(zhì)、規(guī)模,以及所采用的前端程序創(chuàng)建工具等,做出合適的數(shù)據(jù)庫(kù)類型選擇。5.1 數(shù)據(jù)庫(kù)及字段屬性設(shè)計(jì)本項(xiàng)目中的數(shù)據(jù)庫(kù)設(shè)計(jì)比較簡(jiǎn)單,主要涉及兩個(gè)表:mylove和history;mylove主要是存儲(chǔ)收藏的內(nèi)容,history主要存儲(chǔ)歷史瀏覽記錄,這兩個(gè)表的字段一樣,下面介紹history的字段,如表5-1所示:字段說明:id 記錄的id號(hào),title 內(nèi)容的標(biāo)題,link 內(nèi)容的url,body 內(nèi)容主體。表5-1 his

35、tory字段表屬性數(shù)據(jù)類型允許空主鍵idintegernot nullprimary keytitletextlinktextbodytextmylove與history相同,就不重復(fù)介紹了。5.2數(shù)據(jù)庫(kù)的連接這里將介紹如何進(jìn)行android數(shù)據(jù)庫(kù)的連接,android中自帶的sqlite數(shù)據(jù)庫(kù)是十分小型的數(shù)據(jù)庫(kù),這樣正適合android這種移動(dòng)平臺(tái)使用。android數(shù)據(jù)庫(kù)的存儲(chǔ)位置在data/data/<項(xiàng)目文件夾>/databases/目錄下,android是利用contentprovider作為內(nèi)容提供商,sqliteopenhelper數(shù)據(jù)庫(kù)幫助類來進(jìn)行對(duì)數(shù)據(jù)庫(kù)的創(chuàng)建和操

36、作。通過context.getcontentresolver()方法直接對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作。程序中數(shù)據(jù)庫(kù)的類為rssdb extend sqliteopenhelper(繼承關(guān)系)。5.2.1數(shù)據(jù)庫(kù)創(chuàng)建android提供了標(biāo)準(zhǔn)的數(shù)據(jù)庫(kù)創(chuàng)建方式,繼承sqliteopenhelper,實(shí)現(xiàn)oncreate和onupgrade兩個(gè)方法,有個(gè)好處就是便于數(shù)據(jù)庫(kù)版本的升級(jí),連接數(shù)據(jù)庫(kù)的算法如下:public rssdb(context context) /創(chuàng)建數(shù)據(jù)庫(kù)super(context, db_name, null, db_vertion);public void oncreate(sqliteda

37、tabase db) /類創(chuàng)建是調(diào)用,在這里主要?jiǎng)?chuàng)建tablepublic void onupgrade(sqlitedatabase db, int oldversion, int newversion) /版本升級(jí)時(shí)調(diào)用數(shù)據(jù)庫(kù)創(chuàng)建不成功會(huì)拋出filenodfindexception異常。5.2.2 數(shù)據(jù)庫(kù)操作打開數(shù)據(jù)庫(kù)操作:db = this.getwriteabledatabase();this表示rssdb執(zhí)行sql語句:db.execsql(sql);插入數(shù)據(jù):db.insert()刪除數(shù)據(jù):db.delete();更新數(shù)據(jù):db.update()查詢數(shù)據(jù):db.query();當(dāng)執(zhí)

38、行完這些操作后,一定要關(guān)閉數(shù)據(jù)庫(kù)連接:db.close();這些操作的具體使用方法可參照android sdk。 第六章 系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)6.1 rss資源的收集和分析目前有很多門戶網(wǎng)站支持rss訂閱,例如新浪,騰訊,搜狐,百度等,本軟件主要收集了新浪和騰訊的rss 站點(diǎn),例如新浪所提供的站點(diǎn)分為:新聞中心,體育新聞,科技新聞,財(cái)經(jīng)新聞,軍事新聞等;新聞中心中包括各個(gè)站點(diǎn)的鏈接,例如新聞中心中的新聞要聞的rss地址是rss有固定的格式,截取新浪新聞的新聞要聞的部分內(nèi)容:<?xml version="1.0" encoding="utf-8"?>

39、.<item><title><!cdata科技中國(guó)互聯(lián)網(wǎng)5月批發(fā)ipo 富豪與泡沫齊飛(05/05 10:58)></title><link><author>www.sina.com.cn</author><guid><category><!cdata></category><pubdate>thu, 5 may 2011 02:58:57 gmt</pubdate><comments></comments><

40、description><!cdata侯繼勇 北京報(bào)道5月4日晚,人人網(wǎng)在北京國(guó)貿(mào)三期地下一層中國(guó)大宴會(huì)廳舉行慶功宴。除了人人網(wǎng)留守國(guó)內(nèi)的高管,主要參會(huì)人員是媒體記者?;顒?dòng)已經(jīng)格式化:有領(lǐng)導(dǎo)講話,有晚宴,有抽獎(jiǎng),最后是人人網(wǎng)創(chuàng)始人陳一舟的視頻連線接受國(guó)內(nèi)媒體記者采訪,卻會(huì)回避所有尖銳.></description></item><item><title><!cdata科技福布斯:人人公司加入中國(guó)高價(jià)科技股俱樂部(05/05 10:56)></title><link><author>

41、www.sina.com.cn</author><guid><category><!cdata></category><pubdate>thu, 5 may 2011 02:56:22 gmt</pubdate><comments></comments><description><!cdata></description></item>.如上,接下來對(duì)這些內(nèi)容進(jìn)行分析:<?xml version="1.0" enc

42、oding="utf-8"?>代表這個(gè)文件的數(shù)據(jù)格式,這一般分為utf-8和gb2312;每條信息在<item></item>中包含,這里面有很多節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)的內(nèi)容有各自代表的信息:title:代表標(biāo)題信息link:代表這篇文章的鏈接地址author:代表這篇文章的作者guid:與link相似,代表這篇文章的鏈接category:代表這篇文章所屬類型pubdate:代表這篇文章發(fā)布時(shí)間comments:代表這篇文章的評(píng)論description:代表這篇文章的簡(jiǎn)述綜合以上信息,完成rss閱讀不會(huì)有問題,收集新浪和騰訊的這些rss站點(diǎn),記錄在一個(gè)

43、xml文件中,用于程序的讀取和解析,本軟件收集的內(nèi)容及格式,以新浪為例,部分內(nèi)容如下:<?xml version="1.0" encoding="utf-8"?><news title="新聞中心"><outline title="新聞要聞" xmlurl="flag="sina_ddt" encoding="utf-8" /><outline title="國(guó)內(nèi)要聞" xmlurl="flag

44、="sina_ddt" encoding="utf-8" /><outline title="國(guó)際要聞" xmlurl="flag="sina_ddt" encoding="utf-8" /><outline title="社會(huì)新聞"xmlurl=" flag="sina_ddt"encoding="utf-8" /><outline title="時(shí)政要聞"x

45、mlurl=" flag="sina_ddt"encoding="utf-8" /> .其中title表示rss的類型xmlurl表示一個(gè)rss地址連接encdoing表示rss地址連接中的內(nèi)容的數(shù)據(jù)格式flag有特定的含義,根據(jù)rss地址連接獲取到的每條信息都有一個(gè)對(duì)應(yīng)的連接,這個(gè)連接對(duì)應(yīng)的內(nèi)容用瀏覽器查看源文件,可以發(fā)現(xiàn)我們所需要的內(nèi)容一般在一塊特定的區(qū)域中,其他的信息我們都不需要,而且那些信息很浪費(fèi)流量,根據(jù)這塊特定的區(qū)域,找出起始位置和結(jié)束位置,注意,這個(gè)起始和結(jié)束的位置在這個(gè)連接的源文件中必須是唯一的,flag中的值就是起始和結(jié)

46、束位置,這個(gè)值對(duì)應(yīng)該項(xiàng)目中res/values/arrays.xml;例如時(shí)政要聞對(duì)應(yīng)的flag是sina_ddt,sina_ddt表示的內(nèi)容是:<array name="sina_ddt"> <item>string/sina_ddt_begin</item> <item>string/sina_ddt_end</item></array>根據(jù)sina_ddt這個(gè)值就可以在代碼中解析出起始位置和結(jié)束位置,然后根據(jù)這兩個(gè)位置就可以解析出我們需要的內(nèi)容。6.2 系統(tǒng)界面的設(shè)計(jì)6.2.1 主界面的實(shí)現(xiàn)and

47、roid的每一個(gè)可視化界面,都有其唯一的布局配置文件,該文件中有各種布局的方式,和各種資源文件如圖像,文字,顏色引用等,程序在運(yùn)行時(shí)可以通過代碼對(duì)各個(gè)配置文件進(jìn)行讀取,這樣可以形成不同的可視化界面和絢麗的效果。該軟件的主界面是一個(gè)activity,android工程在啟動(dòng)每一個(gè)activity時(shí)都會(huì)首先執(zhí)行oncreate()方法,如下:public void oncreate(bundle savedinstancestate) super.oncreate(savedinstancestate);setcontentview(r.layout.main_tabs);該方法主要執(zhí)行界面的初始

48、化操作,activity有個(gè)設(shè)置布局的方法:setcontentview(int id),參數(shù)為資源id,該id在工程目錄res/layout下,主界面的布局文件為main_tabs,下面是該布局文件的結(jié)構(gòu):<?xml version="1.0" encoding="utf-8"?><linearlayout ><viewflipper ><include /><include/><include /><include /></viewflipper><

49、/linearlayout>在線性布局<linearlayout>中添加viewflipper,viewflipper可以用來指定framelayout內(nèi)多個(gè)view之間的切換效果,可以一次指定也可以每次切換的時(shí)候都指定單獨(dú)的效果。該類額外提供了如下幾個(gè)函數(shù): · isflipping: 用來判斷view切換是否正在進(jìn)行 · setfilpinterval:設(shè)置view之間切換的時(shí)間間隔 · startflipping:使用上面設(shè)置的時(shí)間間隔來開始切換所有的view,切換會(huì)循環(huán)進(jìn)行 · stopflipping: 停止view切換 vi

50、ewflipper中<include>不同的布局文件,這樣就可以在同一個(gè)activity中切換不同的布局,這個(gè)activity實(shí)現(xiàn)ongesturelistener這個(gè)接口,實(shí)現(xiàn)接口里面的方法,就可以實(shí)現(xiàn)手勢(shì)處理,實(shí)現(xiàn)更好的用戶體驗(yàn)。這些組件都有很多屬性可以設(shè)置該組件的位置,大小,背景顏色等;如:orientation=”horizontal” :此線性布局的子部件水平對(duì)齊 layout_height=”fill_parent” :布局的高度為填滿父布局 layout_width=”wap_content” :布局的寬度由子部件的寬度決定6.2.2主界面中子界面的實(shí)現(xiàn)在主界面中實(shí)現(xiàn)

51、四個(gè)界面的切換,分別是我的收藏,騰訊rss,新浪rss和瀏覽記錄,分別對(duì)應(yīng)的布局文件是rss_love.xml,qq_main.xml,sina_main.xml和rss_history.xml,這些文件的在工程的res/layout/下。1. 我的收藏和瀏覽記錄界面的實(shí)現(xiàn)我的收藏和瀏覽記錄的界面類似,布局文件中主要是listview組件,在android開發(fā)中,listview是比較常用的組件,它一列表的形式展示具體內(nèi)容,并能根據(jù)數(shù)據(jù)的長(zhǎng)度自適應(yīng)顯示。listview需要一個(gè)適配器,android自帶的一些適配器如simplaadapter顯示比較單一,所以本軟件中繼承baseadapter

52、,通過對(duì)這個(gè)適配器的擴(kuò)展實(shí)現(xiàn)我們需要的效果,擴(kuò)展成一行能顯示多個(gè)內(nèi)容。由于baseadapter是一個(gè)抽象類,我們需要實(shí)現(xiàn)里面的getview方法返回一個(gè)view,即視圖,視圖可以顯示在activity上,這樣就可以看到我們想要的界面。listview有一個(gè)監(jiān)聽器onitemclicklistner,實(shí)現(xiàn)里面的方法,就可以監(jiān)聽touch事件,當(dāng)手指點(diǎn)擊到每一行時(shí),可以通過listview.getitemposition(int potion)該行信息,這樣就可以通過intent傳遞數(shù)據(jù)到其他的activity。本程序的思路是點(diǎn)擊某一行,跳轉(zhuǎn)到另一個(gè)activity,顯示新聞的內(nèi)容,如圖6-1和

53、6-2所示。圖6-1 瀏覽記錄頁面圖 圖6-2我的收藏界面圖2. 騰訊rss界面的實(shí)現(xiàn)這個(gè)界面為了更好的用戶體驗(yàn),使用了expandablelistview,expandablelistview是android中的手風(fēng)琴,個(gè)人感覺效果相當(dāng)棒,它是一個(gè)垂直滾動(dòng)的顯示兩個(gè)級(jí)別列表項(xiàng)的視圖,如圖6-3所示,類似二級(jí)菜單,列表項(xiàng)來時(shí)expandablelistadapter;點(diǎn)擊組可以單獨(dú)展開。expandablelistview的主要方法:expandgroup(int grouppos) :在分組列表視圖中展開一組,setselectedgroup(int groupposition) :設(shè)置選擇

54、指定的組。setselectedchild(int groupposition, int childposition, boolean shouldexpandgroup) :設(shè)置選擇指定的子項(xiàng)。getpackedpositiongroup(long packedposition) :返回所選擇的組getpackedpositionforchild(int groupposition, int childposition) :返回所選擇的子項(xiàng)getpackedpositiontype(long packedposition) :返回所選擇項(xiàng)的類型(child,group)isgroupexpa

55、nded(int groupposition) :判斷此組是否展開expandablelistviewd數(shù)據(jù)源設(shè)置是調(diào)用expandablelistview.setadapter(expandablelistadapter adapter),expandablelistadapter是一個(gè)接口,baseexpandablelistadapter實(shí)現(xiàn)了這個(gè)接口,我們通過繼承這個(gè)類,重寫父類的一些方法,如:getgroupview ::獲取組的視圖getchildview:獲取某一組下的子視圖getgroupcount:獲取組的個(gè)數(shù)getchildrencount:獲取某一組下的子視圖的個(gè)數(shù)ischildselectable:子視圖是否可以被選中baseexpandablelistadapter需要設(shè)置數(shù)據(jù)源,這個(gè)數(shù)據(jù)源是從xml文件中讀取,關(guān)于xml讀取的實(shí)現(xiàn)在下面介紹。 圖6-3 騰訊rss圖3. 新浪rss界面的實(shí)現(xiàn) 新浪rss界面 (gridview) 圖6-4 點(diǎn)擊新

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論