基于android手機(jī)短信管理系統(tǒng)畢業(yè)論文_第1頁(yè)
基于android手機(jī)短信管理系統(tǒng)畢業(yè)論文_第2頁(yè)
基于android手機(jī)短信管理系統(tǒng)畢業(yè)論文_第3頁(yè)
基于android手機(jī)短信管理系統(tǒng)畢業(yè)論文_第4頁(yè)
基于android手機(jī)短信管理系統(tǒng)畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、摘 要摘 要隨著智能手機(jī)一步步走進(jìn)普通人的生活,它將成為人們獲取信息的主要設(shè)備。本文對(duì)目前應(yīng)用的symbian、windowsmobile、macosx和rim等平臺(tái)的現(xiàn)狀進(jìn)行了分析與比較。進(jìn)而研究分析了android平臺(tái)的系統(tǒng)架構(gòu)和組件模型,接著解析了android中的重要api和應(yīng)用構(gòu)成,以intent和生命周期的機(jī)制。在此基礎(chǔ)上,基于android平臺(tái)設(shè)計(jì)和開發(fā)手機(jī)短信管理。本系統(tǒng)界面友好、操作便捷,具有良好的可擴(kuò)展性和可維護(hù)性。完成了根據(jù)人名、日期、信息類型分類索引排序自動(dòng)歸納及內(nèi)容搜索功能。手機(jī)可以通過(guò)gprs與計(jì)算機(jī)遠(yuǎn)程備份和恢復(fù)。系統(tǒng)經(jīng)過(guò)測(cè)試,可以穩(wěn)定運(yùn)行,能夠滿足手機(jī)用戶的基本

2、需求。關(guān)鍵詞:android;java;短信管理;intent;布局 abstractwith the mobile phone enters into the live step by step,it will become the main device to obtain information. services of mobile phone will have with the mobile phone enters into the live step by step,it will become the main device to obtain information. th

3、is thesis discusses the present application of symbian, windows mobile, mac os x and rim situation of such platform are analyzed and compared. further research and analysis of the android platform system architecture and the component model, then analyzes the important android api and the applicatio

4、n form, with intent and life cycle mechanism, on this basis, design and development of mobile phone constellation inquires the software based on the android platform. this system friendly interface, convenient operation, has good expansibility and maintainability; completedautomaticallysummarizedund

5、erthenames, dates,type of information classificationindexsortandcontentsearch capabilities. mobile phoneviagprs andcomputerremote backup andrecovery after test of system, can stable operation, to meet the basic needs of mobile phone users.keywords: android; java; constellation query; intent; layouti

6、ii目 錄目 錄第1章緒論11.1 課題背景11.2 android平臺(tái)與其他平臺(tái)的比較11.3 本文主要工作21.4 論文組織結(jié)構(gòu)2第2章android的架構(gòu)分析42.1android的功能特征42.2 android架構(gòu)分析52.2.1 應(yīng)用程序框架62.2.2 類庫(kù)72.2.3 android運(yùn)行時(shí)組件82.3 android應(yīng)用的構(gòu)成和工作機(jī)制8第3章android應(yīng)用程序結(jié)構(gòu)剖析93.1 android的api93.2 android應(yīng)用程序結(jié)構(gòu)解析103.2.1 活動(dòng)103.2.2 意圖接收器113.2.3 服務(wù)113.2.4 內(nèi)容提供者113.3 intent的詳細(xì)解析123.3

7、.1 intent的抽象描述123.3.2 android如何解析intent133.4 android活動(dòng)的生命周期143.4.1 活動(dòng)的生命狀態(tài)143.4.2 活動(dòng)的運(yùn)作流程16第4章手機(jī)短信軟件設(shè)計(jì)實(shí)現(xiàn)184.1 系統(tǒng)設(shè)計(jì)需求184.1.1 需求分析184.1.2 下載開發(fā)資源184.1.3 更新ec1ipse并下載adt(android開發(fā)插件)194.1.4 使用ec1ipse開發(fā)android應(yīng)用204.2 短信管理軟件程序中各類組件214.2.1 package explorer中的組件224.2.2 應(yīng)用程序的資源224.2.3 布局文件main.xml224.2.4 andr

8、oidmanifest.xml234.3 手機(jī)短信軟件設(shè)計(jì)實(shí)現(xiàn)244.3.1 系統(tǒng)主界面的實(shí)現(xiàn)244.3.2 短信管理功能實(shí)現(xiàn)274.3.3 常見的錯(cuò)誤分析解決29第5章短信息的備份與恢復(fù)31第6章結(jié)語(yǔ)336.1總結(jié)336.2展望33參考文獻(xiàn)34第1章 緒論第1章 緒論1.1 課題背景隨著移動(dòng)通信的發(fā)展以及互聯(lián)網(wǎng)向移動(dòng)終端的普及,網(wǎng)絡(luò)和用戶對(duì)移動(dòng)終端的要求越來(lái)越高,而symbian,windows mobile,palm os等手機(jī)平臺(tái)過(guò)于封閉,不能很好的滿足用戶的需求,因此市場(chǎng)迫切需要一個(gè)開放性很強(qiáng)的平臺(tái)。android是一套真正意義上的開放性移動(dòng)設(shè)備綜合平臺(tái),它包括操作系統(tǒng)、中間件和一些關(guān)

9、鍵的平臺(tái)應(yīng)用。android是由linux+java 構(gòu)成的開源軟件,允許所有廠商和個(gè)人在其基礎(chǔ)上進(jìn)行開發(fā)。android 平臺(tái)的開放性等特點(diǎn)既能促進(jìn)技術(shù)(包括平臺(tái)自身)的創(chuàng)新,又有助于降低開發(fā)成本,還可以使運(yùn)營(yíng)商能非常方便地制定自己的特色化的產(chǎn)品。因此,它具有很大的市場(chǎng)發(fā)展?jié)摿?。?jīng)過(guò)多年的發(fā)展,第三代數(shù)字通信( 3g)技術(shù)獲得了廣泛的接受,它為移動(dòng)終端用戶帶來(lái)了更快的數(shù)據(jù)傳輸速率。隨著3g網(wǎng)絡(luò)的使用,移動(dòng)終端不再僅是通訊網(wǎng)絡(luò)的終端,還將成為互聯(lián)網(wǎng)的終端。因此,移動(dòng)終端的應(yīng)用軟件和需要的服務(wù)將會(huì)有很大的發(fā)展空間。 google與包括中國(guó)移動(dòng)、摩托羅拉在內(nèi)的三十多家技術(shù)和無(wú)線應(yīng)用的領(lǐng)軍企業(yè)組成的

10、開發(fā)聯(lián)盟為此于2007年11月推出了一個(gè)專為移動(dòng)設(shè)備設(shè)計(jì)的軟件平臺(tái)android。android最大特點(diǎn)在于它是一個(gè)開放的體系架構(gòu),具有非常好的開發(fā)和調(diào)試環(huán)境,而且還支持各種可擴(kuò)展的用戶體驗(yàn), android里面具有非常豐富的圖形系統(tǒng), 對(duì)多媒體的支持功能和非常強(qiáng)大的瀏覽器。本課題的目的在于掌握java手機(jī)應(yīng)用開發(fā)技術(shù)和移動(dòng)軟件平臺(tái)開發(fā)技術(shù)。在以java語(yǔ)言為基礎(chǔ),結(jié)合android移動(dòng)開發(fā)平臺(tái),并利用android提供的sdk,完成在android平臺(tái)上運(yùn)行的短信管理軟件,形成一款具有一定功能的手機(jī)應(yīng)用軟件。本課題的意義在于通過(guò)開發(fā)一款短信管理手機(jī)應(yīng)用軟件,可以熟練應(yīng)用android平臺(tái)提供

11、的應(yīng)用程序接口,掌握android平臺(tái)上的各種應(yīng)用。1.2 android平臺(tái)與其他平臺(tái)的比較首先看一下symbian,它存在著以下的致命不足:symbian的主導(dǎo)者為諾基亞、索尼愛立信等傳統(tǒng)的手機(jī)廠商,因此雖然symbian非常成熟,但它基本上還帶有濃厚的保守色彩,應(yīng)用軟件與我們?nèi)粘5膒c軟件有較大的理念差異。再者symbian與互聯(lián)網(wǎng)的結(jié)合給人感覺仍不夠緊密,互聯(lián)網(wǎng)應(yīng)用更多只是作為陪襯存在。android平臺(tái)與此相反,移動(dòng)互聯(lián)網(wǎng)是它最重要的應(yīng)用,無(wú)論系統(tǒng)內(nèi)核、應(yīng)用軟件還是硬件設(shè)計(jì),幾乎都是圍繞著快捷的移動(dòng)互聯(lián)網(wǎng)應(yīng)用所展開,同時(shí)android與pc平臺(tái)存在先天的基因聯(lián)系,可以很好的實(shí)現(xiàn)與pc

12、設(shè)備的信息互享,更容易獲得用戶的廣泛認(rèn)可。與android擁有相同屬性的還有微軟的windows mobile。至于iphone,它只是蘋果公司的封閉平臺(tái),用戶無(wú)法在iphone中自行安裝應(yīng)用,所有的東西都應(yīng)該蘋果自行設(shè)計(jì)制造,從而確保利潤(rùn)不被第三方分享。蘋果自己為iphone開發(fā)了嵌入系統(tǒng)以及完整的應(yīng)用,但它干脆都不宣揚(yáng)iphone的軟件設(shè)計(jì),而是將iphone作為一個(gè)包含軟硬件賣點(diǎn)的手機(jī)產(chǎn)品出售。同樣,蘋果式的奢華與時(shí)尚讓iphone大獲成功,以至于成為手機(jī)市場(chǎng)的風(fēng)向標(biāo)。與蘋果相反,android則是走完全開放的道路,這種模式的巨大優(yōu)點(diǎn)在pc軟件領(lǐng)域已為業(yè)界所公認(rèn):自由軟件高度活躍,錯(cuò)誤可

13、以被快速修正,新的應(yīng)用、新的創(chuàng)意可以不斷出現(xiàn)。android平臺(tái)的另外一個(gè)優(yōu)勢(shì)是標(biāo)準(zhǔn)化和跨平臺(tái)。android和操作系統(tǒng)進(jìn)行了緊密的整合,從而可以方便地使用操作系統(tǒng)的功能。這與難于使用操作系統(tǒng)功能的j2me相比,無(wú)疑對(duì)開發(fā)者有很大的吸引力。并且從圖形應(yīng)用界面的開發(fā)上面來(lái)看,android可以使用配置文件來(lái)描述圖形控件的布局,用java代碼編寫實(shí)際響應(yīng)代碼,這樣方便得多。當(dāng)然由于android己經(jīng)提供了大量現(xiàn)成的應(yīng)用api和應(yīng)用工具,使得常規(guī)智能手機(jī)功能的開發(fā)變得非常容易和簡(jiǎn)單。1.3 本文主要工作android是基于linux+java的手機(jī)操作系統(tǒng)平臺(tái),xmpp是基于xml的開源的即時(shí)通訊協(xié)

14、議,本文從實(shí)際應(yīng)用出來(lái),提出了開發(fā)基于android平臺(tái)的手機(jī)短信軟件。本文的主要工作包括:在eclipse開發(fā)環(huán)境下,運(yùn)用java語(yǔ)言和android 的sdk 開發(fā)一款可以實(shí)現(xiàn)查詢星座功能的軟件。本軟件除了即時(shí)文本信息的傳輸顯示外,還可以進(jìn)行圖片的顯示,并對(duì)軟件客戶端的功能進(jìn)行了美化擴(kuò)展,增加了背景和瀏覽的功能。并且該系統(tǒng)在android模擬器上運(yùn)行,取得了很好的運(yùn)行效果。1.4 論文組織結(jié)構(gòu)本文首先分析了系統(tǒng)的研究背景,介紹了android的發(fā)展現(xiàn)狀以及本文的主要內(nèi)容。并對(duì)android與其它手機(jī)操作系統(tǒng)進(jìn)行了比較,說(shuō)明了android的優(yōu)勢(shì)。第二章,介紹了android的特征、andr

15、oid的架構(gòu),運(yùn)行組件以及android應(yīng)用的構(gòu)成和工作機(jī)制。第三章,提出了在android平臺(tái)上開發(fā)基于java的短信管理軟件,提出了系統(tǒng)的架構(gòu)、系統(tǒng)服務(wù)器端和客戶端的解決方案,對(duì)系統(tǒng)采用的intent進(jìn)行解析,并且介紹了android的生命周期。第四章,對(duì)如何實(shí)現(xiàn)短信管理軟件功能進(jìn)行了詳細(xì)的分析,對(duì)軟件設(shè)計(jì)從客戶端界面,代碼段的實(shí)現(xiàn),xml解析模塊,短信管理界面跳轉(zhuǎn)和客戶端擴(kuò)展功能幾個(gè)方面進(jìn)行了詳細(xì)的學(xué)士學(xué)位論文實(shí)現(xiàn),最后對(duì)系統(tǒng)的流程進(jìn)行了描述。第五章,總結(jié)了本文的主要研究?jī)?nèi)容和研究成果,分析了存在的問(wèn)題,并對(duì)今后的發(fā)展方向進(jìn)行了展望。41第2章 android的架構(gòu)分析第2章 andro

16、id的架構(gòu)分析android是一個(gè)包含操作系統(tǒng)、中介架構(gòu)層及應(yīng)用程序所產(chǎn)生出來(lái)的軟件堆棧架構(gòu)。由下而上,其核心為嵌入式linux2.6作業(yè)系統(tǒng),向上搭配google為android開發(fā)的類庫(kù)及android運(yùn)行時(shí),再配合應(yīng)用程序架構(gòu),來(lái)開發(fā)各種不同的應(yīng)用程序。2.1 android的功能特征(l)應(yīng)用程序架構(gòu):在應(yīng)用程序架構(gòu)內(nèi)已經(jīng)具備多種不同的基礎(chǔ)組件,在開發(fā)應(yīng)用程序時(shí),就可以直接調(diào)用這些組件來(lái)使用,可以節(jié)省開發(fā)應(yīng)用程序的心力及時(shí)間。(2)dalvik虛擬機(jī)器:在android平臺(tái)上所使用java虛擬機(jī),不是sim公司的標(biāo)準(zhǔn)java虛擬機(jī),而是使用google自主開發(fā)的代號(hào)為dalvik的虛擬

17、機(jī),它在保證api方面的兼容的同時(shí),針對(duì)移動(dòng)手機(jī)進(jìn)行了大幅優(yōu)化,占用資源更小,運(yùn)行效率更高。(3)集成的瀏覽器:集成的瀏覽器是android內(nèi)建的瀏覽器,是以webkit的瀏覽引擎為基礎(chǔ)所開發(fā)成的。wedkit是一個(gè)開源瀏覽器網(wǎng)頁(yè)排版引擎,目前使用webkit引擎的瀏覽器主要有:safari,midori,epiphany等。配合android手機(jī)的功能,可以在瀏覽網(wǎng)頁(yè)時(shí),達(dá)到更好的效果,例如:局部性的縮放網(wǎng)頁(yè)上的資訊、觸控式的操作等效果。(4)優(yōu)化的繪圖能力:在程序里可以用到的繪圖功能分為2d與3d兩個(gè)方面。在2d方面,android提供了一套特有的類庫(kù)(sgl;而在3d方面則是使用open

18、gles1.0(opengl for embedded systems)規(guī)范的類庫(kù)。它們是一種非??斓膱D形引擎,并且支持硬件加速。(5)sqlite數(shù)據(jù)庫(kù):sqlite提供結(jié)構(gòu)化的數(shù)據(jù)存取。sqlite是一款輕型的數(shù)據(jù)庫(kù),它的設(shè)計(jì)目標(biāo)是嵌入式的,目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用的資源非常低。它能夠支持windows/linux/u nix等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如php,java等,還有odbc接口,同樣比起mysql,postgresql來(lái)講,它的處理速度比它們都快。它無(wú)需安裝和管理配置,它是一個(gè)儲(chǔ)存在單一磁盤文件中的完整數(shù)據(jù)庫(kù),體積小只有250kb但支持

19、數(shù)據(jù)庫(kù)大小至2tb。它雖然很小巧,但是支持的sql語(yǔ)句毫不遜色于其它開源數(shù)據(jù)庫(kù)。同時(shí)它還支持事務(wù)功能和并發(fā)處理等等。sqlite也是一套開放性的關(guān)聯(lián)式資料庫(kù),其特點(diǎn)在于輕量性方面的設(shè)計(jì)結(jié)構(gòu),更適合在手機(jī)上使用。(6)多媒體的支持能力:主要用于播放媒體文件。這同時(shí)包括對(duì)音頻(如播放mp3或其他音樂(lè)文件等)和視頻(如播放從網(wǎng)上下載的視頻)的支持,并支持“播放uri地址”(note:uri即是統(tǒng)一資源識(shí)別地址)模式在網(wǎng)絡(luò)上直接播放的流媒體。另外支持各種通用的靜態(tài)圖像格式,例如:jpg、png、gif等格式。(7)gsm技術(shù):global system for mobile communication

20、s,即全球移動(dòng)通訊系統(tǒng),俗稱”全球通”,是一種起源于歐洲的移動(dòng)通信技術(shù)標(biāo)準(zhǔn),是第二代移動(dòng)通信技術(shù),其開發(fā)目的是讓全球各地可以共同使用一個(gè)移動(dòng)電話網(wǎng)絡(luò)標(biāo)準(zhǔn),讓用戶使用一部手機(jī)就能行遍全球。gsm技術(shù)是屬于手機(jī)硬件方面的展現(xiàn),也是在開發(fā)android應(yīng)用程序時(shí)可以突出的特點(diǎn)之一。(8)藍(lán)牙、edge、3g及wi-fi:藍(lán)牙是一種新型、開放、低成本、短距離的無(wú)線連接技術(shù),可取代短距離的電纜,實(shí)現(xiàn)話音和數(shù)據(jù)的無(wú)線傳輸。edge(enhanced data rate for gsm,evolution),即增強(qiáng)型數(shù)據(jù)速率gsm演進(jìn)技術(shù)。edge是一種從gsm到3g的過(guò)渡技術(shù),它主要是在gsm系統(tǒng)中采用了

21、一種新的調(diào)制方法,即最先進(jìn)的多時(shí)隙操作和spsk調(diào)制技術(shù)。由于8psk可將現(xiàn)有g(shù)sm網(wǎng)絡(luò)采用的gmsk調(diào)制技術(shù)的信號(hào)空間從2擴(kuò)展到8,從而使每個(gè)符號(hào)所包含的信息是原來(lái)的4倍。wi-fi(wirelessfidelity),即無(wú)線保真技術(shù),與藍(lán)牙技術(shù)一樣,同屬于在辦公室和家庭中使用的短距離無(wú)線技術(shù)。該技術(shù)使用的是2.4ghz附近的頻段,該頻段目前尚屬?zèng)]用許可的無(wú)線頻段。其目前可使用的標(biāo)準(zhǔn)有兩個(gè),分別是ieee802.lla和ieee802.11b。這些通訊能力也是屬于手機(jī)硬件方面的展現(xiàn),也是在開發(fā)android應(yīng)用程序時(shí)可以突出的特點(diǎn)之一。(9)gps: global positioning s

22、ystem,即全球定位系統(tǒng),它是一個(gè)由覆蓋全球的24顆衛(wèi)星組成的衛(wèi)星系統(tǒng)。這個(gè)系統(tǒng)可以保證在任意時(shí)刻和任何地點(diǎn)都可以同時(shí)觀測(cè)到4顆衛(wèi)星,以保證衛(wèi)星可以采集到該觀測(cè)點(diǎn)的經(jīng)緯度和高度,以便實(shí)現(xiàn)導(dǎo)航、定位、授時(shí)等功能。這項(xiàng)技術(shù)可以用來(lái)引導(dǎo)飛機(jī)、船舶、車輛以及個(gè)人。這個(gè)同樣也是屬于手機(jī)硬體方面的體現(xiàn),也是在開發(fā)android應(yīng)用程序是可以突出的特點(diǎn)之一。2.2 android架構(gòu)分析圖中顯示的是android架構(gòu)的五個(gè)主要部分。2.2.1 應(yīng)用程序框架在android sdk中,定義了讓開發(fā)者使用與核心應(yīng)用程序相同api的權(quán)限應(yīng)用程序框架是為了要簡(jiǎn)化組件的重新利用而設(shè)計(jì)的,應(yīng)用程序可以發(fā)布功能為其它應(yīng)

23、用程序所使用。但是,這要受限于應(yīng)用程序架構(gòu)的安全機(jī)制,使用者以用同樣的機(jī)制來(lái)新增、置換組件。目前所有的應(yīng)用程序是由服務(wù)及系統(tǒng)來(lái)組成,包含有:(l)一套強(qiáng)大和可擴(kuò)展的視圖系統(tǒng):用來(lái)建構(gòu)一個(gè)應(yīng)用程序的基本組件,包了在開發(fā)系統(tǒng)畫面時(shí),常用的列表、網(wǎng)格、文本框、按鈕等控制項(xiàng),甚至是內(nèi)嵌的web瀏覽器。 圖2-1 android架構(gòu)的五個(gè)部分(android sdk)(2)內(nèi)容提供者:使應(yīng)用程序可以訪問(wèn)另一個(gè)應(yīng)用程序的數(shù)據(jù)(如聯(lián)系人數(shù)庫(kù)),或者短信管理它們自己的數(shù)據(jù)。(3)資源管理器:提供各種非程序代碼的資源讓應(yīng)用程序去使用。例如:本字符串、圖形文件或排版相關(guān)的布局文件。(4)通知管理器:提供應(yīng)用程序在

24、狀態(tài)欄中顯示應(yīng)用程序自定義的提示信息。(5)活動(dòng)管理器:管理所有應(yīng)用程序的生命周期及提供常用的導(dǎo)航回退功能。例如:啟動(dòng)應(yīng)用程序要用到的資源準(zhǔn)備及關(guān)閉應(yīng)用程序時(shí)釋放內(nèi)存及相關(guān)資源等工作。(6)視窗管理器:用來(lái)管理所有啟動(dòng)程序的視窗。(7)位置管理器:用來(lái)管理地圖服務(wù)的相關(guān)功能。(8)電話管理器:用來(lái)管理用戶撥打與接聽電話的相關(guān)功能。(9)包管理器:管理所有安裝在android系統(tǒng)內(nèi)的包。2.2.2 類庫(kù)在android中包含一些c/c+的類庫(kù),這些類庫(kù)能被android系統(tǒng)中不同的組件來(lái)使用。開發(fā)者可以通過(guò)應(yīng)用程序框架使用這些功能。部分核心類庫(kù)列表如下:(1)surface manager:主要

25、的功能是讓開發(fā)者可以去存取/顯示系統(tǒng)及管理的功能,在顯示與存取操作間的對(duì)應(yīng)、互動(dòng)以及實(shí)現(xiàn)無(wú)接縫的2d/3d多應(yīng)用程序之間的整合。例如:在2d、2d顯示上的合成、疊合動(dòng)作。(2)3dlibraries:主要是依opengles1.0規(guī)范所定義的3d繪圖引擎。該庫(kù)使用硬件加速(當(dāng)硬件可用時(shí)),可以將硬件的3d功能做最佳化的處理顯示。(3)sgl:主要是處理有關(guān)顯示2d方面的繪圖引擎。(4)media frame work:主要是以packetvideo公司的opencore為基礎(chǔ)所發(fā)展的多媒體類庫(kù),該庫(kù)支持回放和錄制大量流行的音視頻格式和靜態(tài)圖片。例如:mpeg4、h.264、mp3、aac、am

26、r、jpg、png、gif等格式(5)free type:主要是用來(lái)顯示點(diǎn)陣圖和處理向量字形的。(6)ssl:(securesocketsuyer),中文名為“安全套接層協(xié)議層”,它是網(wǎng)景公司提出的基于web應(yīng)用的安全協(xié)議,當(dāng)前版本為3.0。ssl協(xié)議指定了一種在應(yīng)用程序協(xié)議(如http、telenet、nmtp和ftp等)和tcp/ip協(xié)議之間提供數(shù)據(jù)安全性分層的機(jī)制,它為tcp/ip連接提供數(shù)據(jù)加密、服務(wù)器認(rèn)證、消息完整性以及可選的客戶機(jī)認(rèn)證。它已被廣泛地用于web瀏覽器與服務(wù)器之間的身份認(rèn)證和加密數(shù)據(jù)傳輸。ssl協(xié)議位于tcp膽協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。ssl協(xié)議

27、可分為兩層:ssl記錄協(xié)議(ssl record proto col):它建立在可靠的傳輸協(xié)議(如tcp)之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持。ssl握手協(xié)議(ssl hand shake proto col):它建立在ssl記錄協(xié)議之上,用于在實(shí)際的數(shù)據(jù)傳輸開始前,通訊雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。ssl協(xié)議提供的服務(wù)主要有:認(rèn)證用戶和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶機(jī)和服務(wù)器;加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊取;維護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過(guò)程中不被改變。(7)sqlite:sqlite是一套開放性的關(guān)聯(lián)式資料庫(kù),能夠被所有應(yīng)用程序使用的輕量級(jí)的關(guān)系數(shù)據(jù)

28、庫(kù)引擎。(8)web kit:是一個(gè)先進(jìn)的網(wǎng)頁(yè)瀏覽器引擎,被用來(lái)構(gòu)建android瀏覽器和內(nèi)嵌的web視圖,也可以讓開發(fā)者利用這個(gè)引擎來(lái)做不同的應(yīng)用。(9)lib c:就是一個(gè)bsd標(biāo)準(zhǔn)c類庫(kù)。但是,針對(duì)linux嵌入式裝置進(jìn)行過(guò)最佳化的調(diào)整。2.2.3 android運(yùn)行時(shí)組件雖然android是用java語(yǔ)言來(lái)開發(fā)、撰寫應(yīng)用程序,但卻不使用java運(yùn)行時(shí)組件來(lái)執(zhí)行java程序,而是使用了由google自行研發(fā)的android運(yùn)行時(shí)組件來(lái)執(zhí)行程序。android運(yùn)行時(shí)組件包括兩個(gè)重要的部分,一個(gè)是核心類庫(kù),另一個(gè)是dalvik虛擬機(jī)。2.3 android應(yīng)用的構(gòu)成和工作機(jī)制對(duì)于一個(gè)andr

29、oid應(yīng)用程序來(lái)說(shuō),是由activity、intentreceiver、service、content provider四部分組成,但并不是每一個(gè)android應(yīng)用程序都必須由這四部分組成。在應(yīng)用程序中使用時(shí),需要在配置文件androidmanifest.xml中進(jìn)行配置。這個(gè)配置文件是每個(gè)android應(yīng)用程序所必需的,用于定義應(yīng)用程序的組件、組件的功能以及必要條件等。android應(yīng)用的構(gòu)成和工作流程如圖2-2:internetreceiveractivity外部事件internet通過(guò)internet receiver對(duì)外部事件進(jìn)行響應(yīng)content provideractivity存儲(chǔ)

30、設(shè)備通過(guò)internet實(shí)現(xiàn)活動(dòng)之間的轉(zhuǎn)換通過(guò)content provider進(jìn)行數(shù)據(jù)存儲(chǔ)servicebinder通過(guò)binder對(duì)service進(jìn)行綁定圖2-2 android的構(gòu)成和工作流程第3章 android應(yīng)用程序結(jié)構(gòu)剖析第3章 android應(yīng)用程序結(jié)構(gòu)剖析3.1 android的apiandroid api主要包含了以下幾個(gè)部分:(1)androidmanifest.xmlandroidmanifest.xml是系統(tǒng)的控制文件,它告訴系統(tǒng)如何處理所創(chuàng)建的所有應(yīng)用組件(尤其是活動(dòng)(activity),服務(wù)(service),意圖接收器(intent receiver)和內(nèi)容提供者

31、(content provider)。舉例來(lái)說(shuō),控制文件就是把活動(dòng)和要接收的意圖(intents)連接在一起的“膠水”。(2)活動(dòng)活動(dòng)就是一個(gè)有生命周期的對(duì)象。一個(gè)活動(dòng)就是完成某些工作的代碼塊,這部分工作還可能包括對(duì)用戶ui界面的顯示。不過(guò)這不是必須的,有些活動(dòng)從不顯示ui界面。(3)視圖視圖可以將其自身繪制到屏幕上。android的用戶界面由一系列的視圖樹構(gòu)成。接口都是由一組以樹的形式出現(xiàn)的視圖組成的。開發(fā)者可以通過(guò)創(chuàng)建一個(gè)新的視圖的方法來(lái)使用自定義的圖形處理技術(shù)(比如開發(fā)游戲,或者是使用了不常用的用戶圖形窗口界面)。(4)意圖意圖是一個(gè)簡(jiǎn)單的消息對(duì)象,它表示程序想做某事的“意圖”。比如應(yīng)用

32、程序想要顯示一個(gè)網(wǎng)頁(yè),那么它可以通過(guò)創(chuàng)建一個(gè)intent實(shí)例并將其傳遞給系統(tǒng)來(lái)表示意圖瀏覽這個(gè)uri。系統(tǒng)將定位到能處理這一intent的代碼(在當(dāng)前情況下就是瀏覽器),并運(yùn)行之。意圖也可以用于廣播系統(tǒng)范圍內(nèi)的有效事件(例如通知事件)。(5)服務(wù)服務(wù)是運(yùn)行在后臺(tái)的一段代碼。它可以運(yùn)行在它自己的進(jìn)程,也可以運(yùn)行在其他應(yīng)用程序的進(jìn)程里,這取決于自身的需要.。其它的組件可以綁定到一個(gè)服務(wù)上來(lái),通過(guò)遠(yuǎn)程過(guò)程調(diào)用(rpc)來(lái)調(diào)用這個(gè)方法。例如媒體播放器的服務(wù),當(dāng)用戶退出媒體選擇的界面時(shí),仍然希望音樂(lè)依然可以繼續(xù)播放,這時(shí)就可用服務(wù)來(lái)保證當(dāng)用戶界面關(guān)閉時(shí)音樂(lè)還繼續(xù)播放著。 (6)通知通知將以小圖標(biāo)的形式呈

33、現(xiàn)在狀態(tài)欄里,用戶通過(guò)與圖標(biāo)的交互來(lái)接收消息。最常見的通知包括短信息、通話記錄和語(yǔ)音郵件,但是應(yīng)用程序也可以創(chuàng)建它們自己的通知事件。(7)內(nèi)容提供者內(nèi)容提供者是用來(lái)提供對(duì)設(shè)備上數(shù)據(jù)進(jìn)行訪問(wèn)。典型的例子就是使用內(nèi)容提供者來(lái)訪問(wèn)聯(lián)系人列表。應(yīng)用程序也可以使用其它程序通過(guò)內(nèi)容提供者提供的數(shù)據(jù),同時(shí)也可以定義自己的內(nèi)容提供者來(lái)向其它應(yīng)用提供數(shù)據(jù)訪問(wèn)服務(wù)。3.2 android應(yīng)用程序結(jié)構(gòu)解析通常由以下四個(gè)組件來(lái)構(gòu)建一個(gè)完整的android應(yīng)用程序?;顒?dòng)意圖接收器服務(wù)內(nèi)容提供者然而,并不是所有的android應(yīng)用程序都必須具備上面的四個(gè)組件,可以由上面的一個(gè)或幾個(gè)來(lái)組建。當(dāng)決定使用以上哪些組件來(lái)構(gòu)建an

34、droid應(yīng)用程序時(shí),需要將它們注冊(cè)在androidmanifest.xml文件中,這是一個(gè)xml配置文件,在這個(gè)文件中可以聲明應(yīng)用程序組件以及它們的特性和要求。這個(gè)配置文件是每個(gè)android應(yīng)用程序所必需的。3.2.1 活動(dòng)活動(dòng)是以上四個(gè)組件中最常用的一個(gè)。每個(gè)活動(dòng)都是activity的子類,并實(shí)現(xiàn)了一些獨(dú)有的功能,如管理ui顯示和ui的反饋事件。一個(gè)活動(dòng)就相當(dāng)于應(yīng)用程序的一個(gè)用戶界面,由事件響應(yīng)以及視圖等組成。大多數(shù)的應(yīng)用程序通常包括多個(gè)界面。例如:一個(gè)文本聊天應(yīng)用程序,至少應(yīng)該包含一個(gè)聯(lián)系人列表界面、一個(gè)聊天界面、一個(gè)設(shè)置界面、一個(gè)聊天記錄查詢界面等等。每個(gè)界面其實(shí)都可看作是一個(gè)活動(dòng)。

35、顯示一個(gè)新界面就相當(dāng)于生成一個(gè)對(duì)應(yīng)的活動(dòng)對(duì)象。在一些情況下,活動(dòng)能夠返回給它的上級(jí)界面一個(gè)返回值,例如一個(gè)提供給用戶選擇照片的活動(dòng)可以返回給它的調(diào)用者用戶選擇了哪個(gè)照片文件。當(dāng)一個(gè)新的活動(dòng)出現(xiàn)時(shí),前一個(gè)活動(dòng)被中斷并被放入到一個(gè)歷史堆棧中。用戶可以使用返回鍵使前一個(gè)活動(dòng)重現(xiàn)。當(dāng)一個(gè)活動(dòng)不再需要時(shí),可以將它們從歷史堆棧中移除。默認(rèn)情況下,android會(huì)為每個(gè)應(yīng)用程序保留從主界面開始的歷史堆棧。android通過(guò)一個(gè)被稱作意圖的特殊類,來(lái)實(shí)現(xiàn)界面與界面之間的跳轉(zhuǎn)。一個(gè)意圖描述了一個(gè)應(yīng)用程序想要做什么。在意圖的描述結(jié)構(gòu)中,含有兩個(gè)重要的數(shù)據(jù)結(jié)構(gòu):動(dòng)作和動(dòng)作對(duì)應(yīng)的數(shù)據(jù)。典型的動(dòng)作類型包括main、vi

36、ew、pick、edit等等,而動(dòng)作對(duì)應(yīng)的數(shù)據(jù)則以u(píng)ri的形式表示。例如:顯示一個(gè)聯(lián)系人信息的界面,可以創(chuàng)建一個(gè)意圖,并將它的動(dòng)作設(shè)置成view,數(shù)據(jù)設(shè)置成表示這個(gè)人信息的uri。除此之外,還有一個(gè)被稱作意圖過(guò)濾器(intentfiher)的相關(guān)類。當(dāng)發(fā)生一個(gè)有效的目的請(qǐng)求時(shí),意圖過(guò)濾器用來(lái)描述一個(gè)活動(dòng)能夠處理什么意圖。如上例中所描述,想要正常顯示一個(gè)聯(lián)系人信息的界面,必須聲明一個(gè)意圖過(guò)濾器,它說(shuō)明當(dāng)有聯(lián)系人數(shù)據(jù)要被在界面上顯示時(shí),知道如何處理它們。通常意圖過(guò)濾器要被注冊(cè)在androidmanifest.xml文件中。從一個(gè)界面跳轉(zhuǎn)到另一個(gè)界面是由解析各種意圖實(shí)現(xiàn)的。例如:一個(gè)活動(dòng)使用star

37、tactivity(myintent)來(lái)調(diào)用其他活動(dòng)時(shí),系統(tǒng)會(huì)查找所有已經(jīng)安裝的應(yīng)用程序的意圖過(guò)濾器,并從中挑選出能夠匹配myintent意圖的活動(dòng)。隨后,這個(gè)新的活動(dòng)接收到意圖(myintent)的通知并開始運(yùn)行。當(dāng)startactivity方法被調(diào)用,解析意圖的處理過(guò)程隨之發(fā)生,這個(gè)機(jī)制有以下兩個(gè)突出的優(yōu)點(diǎn):活動(dòng)可以通過(guò)一個(gè)以意圖形式產(chǎn)生的請(qǐng)求來(lái)重用其他組件的功能?;顒?dòng)可以在任何時(shí)候被一個(gè)具有等價(jià)意圖過(guò)濾器的新活動(dòng)所替代。3.2.2 意圖接收器當(dāng)想要編寫代碼來(lái)對(duì)外部事件做一些處理時(shí),可以使用意圖接收器。意圖接收器并不顯示ui界面,它是通過(guò)notificationmanager來(lái)通知用戶他們

38、感興趣的事件發(fā)生了。意圖接收器同樣可以被注冊(cè)在androidmanifest.xml文件中,同時(shí)也可以在代碼中使用context.registerreceiver()來(lái)注冊(cè)自己的意圖接收器。當(dāng)一個(gè)意圖接收器被觸發(fā)時(shí),系統(tǒng)會(huì)根據(jù)需要來(lái)啟動(dòng)應(yīng)用程序。3.2.3 服務(wù)服務(wù)是具有長(zhǎng)生命周期并且沒(méi)有用戶界面的代碼。3.2.4 內(nèi)容提供者在android中,每個(gè)應(yīng)用程序都是有自己的userid及在自己的進(jìn)程中執(zhí)行。這樣做的好處是,可以保護(hù)系統(tǒng)及應(yīng)用程序,避免被其他不正常的應(yīng)用程序所影響。可以把每個(gè)進(jìn)程想像成是一個(gè)黑盒子,彼此不會(huì)互相影響,連內(nèi)存的資料都無(wú)法短信管理。如果應(yīng)用程序之間想要短信管理數(shù)據(jù),就需要

39、使用用內(nèi)容提供者。一個(gè)內(nèi)容提供者就是一個(gè)類,它實(shí)現(xiàn)了一個(gè)標(biāo)準(zhǔn)的方法集合。其他的應(yīng)用程序可以使用這些方法來(lái)保存和檢索此內(nèi)容提供者處理過(guò)的數(shù)據(jù)。3.3 intent的詳細(xì)解析在一個(gè)android應(yīng)用中,主要是由四種組件組成的,這四種組件可參考上一節(jié)的內(nèi)容。而這四種組件是獨(dú)立的,它們之間可以互相調(diào)用,協(xié)調(diào)工作,最終組成一個(gè)真正的android應(yīng)用。在這些組件之間的通訊中,主要是由意圖協(xié)助完成的。意圖負(fù)責(zé)對(duì)應(yīng)用中一次操作的動(dòng)作、動(dòng)作對(duì)應(yīng)的數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,android則根據(jù)此意圖的描述,負(fù)責(zé)找到相應(yīng)的組件,將意圖傳遞給它,并完成組件的調(diào)用。因此,意圖在這里起著一個(gè)媒體中介的作用,專門提供組件之

40、間互相調(diào)用的相關(guān)信息,實(shí)現(xiàn)調(diào)用者與被調(diào)用者之間的解耦。例如,在一個(gè)聯(lián)系人維護(hù)的應(yīng)用中,當(dāng)在一個(gè)聯(lián)系人列表屏幕(假設(shè)對(duì)應(yīng)的activity為listactivity)上,點(diǎn)擊某個(gè)聯(lián)系人后,希望能夠調(diào)出此聯(lián)系人的詳細(xì)信息,為了實(shí)現(xiàn)這個(gè)目的,listactivity需要構(gòu)造一個(gè)intent,這個(gè)intent用于告訴系統(tǒng),要做“查看”動(dòng)作,此動(dòng)作對(duì)應(yīng)的查看對(duì)象是“某聯(lián)系人”,然后調(diào)用startactivity(intent intent),將構(gòu)造的intent傳入,系統(tǒng)會(huì)根據(jù)此intent中的描述,到androidmanifest.xml中找到滿足此intent要求的activity。系統(tǒng)會(huì)調(diào)用找到的

41、activity,即為detailactivity,最終傳入intent,detailactivitv則會(huì)根據(jù)此intent中的描述,執(zhí)行相應(yīng)的操作。3.3.1 intent的抽象描述在android參考文檔中,對(duì)意圖的定義是執(zhí)行某操作的一個(gè)抽象描述。該抽象描述的具體內(nèi)容如下:首先,它是要執(zhí)行的動(dòng)作的一個(gè)簡(jiǎn)要描述,如查看、修改等,android定義了一套標(biāo)準(zhǔn)動(dòng)作。此外,還可以根據(jù)應(yīng)用的需要,定義自己的動(dòng)作,并可定義相應(yīng)的活動(dòng)來(lái)處理自定義的動(dòng)作。其次,是執(zhí)行動(dòng)作要操作的數(shù)據(jù),android采用指向數(shù)據(jù)的一個(gè)uri方式來(lái)實(shí)現(xiàn)。另外,除了動(dòng)作和數(shù)據(jù)這兩個(gè)重要屬性外,還有一些附加屬性:類別:被執(zhí)行動(dòng)作

42、的附加信息。例如launcher_category表示意圖的接受者應(yīng)該在launcher中作為頂級(jí)應(yīng)用出現(xiàn);而alternativecategory表示當(dāng)前的意圖是一系列的可選動(dòng)作中的一個(gè),這些動(dòng)作可以在同一個(gè)數(shù)據(jù)上執(zhí)行。數(shù)據(jù)類型:顯式指定意圖的數(shù)據(jù)類型。一般意圖的數(shù)據(jù)類型能夠根據(jù)數(shù)據(jù)本身進(jìn)行判定,但是通過(guò)設(shè)置這個(gè)屬性,可以強(qiáng)制采用指定的類型。組件:指定意圖的目標(biāo)組件的類名稱。通常android會(huì)根據(jù)意圖中包含的其它屬性的信息,比如動(dòng)作、數(shù)據(jù)/數(shù)據(jù)類型、類別進(jìn)行查找,最終找到一個(gè)與之匹配的目標(biāo)組件。但是,如果組件這個(gè)屬性有指定的話,將直接使用它指定的組件,而不再執(zhí)行上述查找過(guò)程。指定了這個(gè)屬性

43、以后,意圖的其它所有屬性都是可選的。附加信息:是其它所有附加信息的集合。使用附加信息可以為組件提供擴(kuò)展信息,比如,如果要執(zhí)行“發(fā)送電子郵件”這個(gè)動(dòng)作,可以將電子郵件的標(biāo)題、正文等保存在附加信息里,傳給電子郵件發(fā)送組件??傊?,動(dòng)作、數(shù)據(jù)/數(shù)據(jù)類型、類別和附加信息一起形成了一種語(yǔ)言。這種語(yǔ)言使系統(tǒng)能夠理解諸如“查看某聯(lián)系人的詳細(xì)信息”之類的短語(yǔ)。隨著應(yīng)用不斷的加入到系統(tǒng)中,它們可以添加新的動(dòng)作、數(shù)據(jù)/數(shù)據(jù)類型和類別來(lái)擴(kuò)展這種語(yǔ)言。應(yīng)用也可以提供自己的活動(dòng)來(lái)處理已經(jīng)存在的這樣的“短語(yǔ)”,從而改變這些“短語(yǔ)”的行為。3.3.2 android如何解析intent在應(yīng)用中,可以以兩種形式來(lái)使用inten

44、t:(l)直接意圖:指定了組件屬性的意圖。通過(guò)指定具體的組件類,通知應(yīng)用啟動(dòng)對(duì)應(yīng)的組件。(2)間接意圖:沒(méi)有指定組件屬性的意圖。這些意圖需要包含足夠的信息,這樣系統(tǒng)才能根據(jù)這些信息,在所有的可用組件中,確定滿足此意圖的組件。對(duì)于直接意圖,android不需要去做解析,因?yàn)槟繕?biāo)組件已經(jīng)很明確,android需要解析的是那些間接意圖,通過(guò)解析,將意圖映射給可以處理此意圖的活動(dòng)、意圖接收器或服務(wù)。意圖解析機(jī)制主要是通過(guò)查找己注冊(cè)在androidmanifest.xml中的所有意圖過(guò)濾器及其中定義的意圖,最終找到匹配的意圖。在這個(gè)解析過(guò)程中,android是通過(guò)意圖的動(dòng)作、數(shù)據(jù)類型、類別這三個(gè)屬性來(lái)進(jìn)

45、行判斷的,判斷方法如下:如果意圖指明定了動(dòng)作,則目標(biāo)組件的意圖過(guò)濾器的動(dòng)作列表中就必須包含有這個(gè)動(dòng)作,否則不能匹配。如果意圖沒(méi)有提供數(shù)據(jù)類型,系統(tǒng)將從數(shù)據(jù)中得到數(shù)據(jù)類型。和動(dòng)作一樣,目標(biāo)組件的數(shù)據(jù)類型列表中必須包含意圖的數(shù)據(jù)類型,否則不能匹配。如果意圖中的數(shù)據(jù)不是content:類型的uri,而且意圖也沒(méi)有明確指定它的數(shù)據(jù)類型,將根據(jù)意圖中數(shù)據(jù)的格式(比如http:或者mailto:)進(jìn)行匹配。同上,意圖的格式必須出現(xiàn)在目標(biāo)組件的格式列表中。如果意圖指定了一個(gè)或多個(gè)類別,這些類別必須全部出現(xiàn)在組建的類別列表中。比如意圖中包含了兩個(gè)類別:launcher_category和alternative

46、c_category,解析得到的目標(biāo)組件必須至少包含這兩個(gè)類別。3.4 android活動(dòng)的生命周期android平臺(tái)是個(gè)手機(jī)作業(yè)系統(tǒng)。撇掉其他功能不談,手機(jī)的特性,就是應(yīng)該能隨時(shí)在未完成目前動(dòng)作的時(shí)候,暫停正在使用的功能,切換到接電話、接收短信模式,而且在接完電話回到應(yīng)用程序時(shí),還希望能看到一樣的內(nèi)容?,F(xiàn)在用戶使用智能手機(jī),大多已習(xí)慣使用多工的作業(yè)系統(tǒng)(如windowsmobile),可以在用手機(jī)聽音樂(lè)的同時(shí),執(zhí)行其他多個(gè)程序。同時(shí)執(zhí)行多個(gè)程序有它的明顯好處,但也有它的缺點(diǎn)。每多執(zhí)行一個(gè)應(yīng)用程序,就會(huì)多耗費(fèi)一些系統(tǒng)內(nèi)存,而手機(jī)里的內(nèi)存是相當(dāng)有限的。當(dāng)同時(shí)執(zhí)行的程序過(guò)多,或是關(guān)閉的程序沒(méi)有正確

47、釋放掉內(nèi)存,系統(tǒng)運(yùn)行時(shí)就會(huì)覺得越來(lái)越慢,甚至不穩(wěn)定。為了解決這個(gè)問(wèn)題,android引入了一個(gè)新的機(jī)制生命周期。android應(yīng)用程序的生命周期是由android框架進(jìn)行管理,而不是由應(yīng)用程序直接控制。通常,每一個(gè)應(yīng)用程序(入口一般會(huì)是一個(gè)活動(dòng)的oncreate方法),都會(huì)占據(jù)一個(gè)進(jìn)程。當(dāng)系統(tǒng)內(nèi)存即將不足的時(shí)候,會(huì)依照優(yōu)先級(jí)自動(dòng)進(jìn)行進(jìn)程的回收。不管是使用者或開發(fā)者,都無(wú)法確定應(yīng)用程序何時(shí)會(huì)被回收。關(guān)于進(jìn)程的生命周期將在下一節(jié)中介紹,本節(jié)主要介紹活動(dòng)的生命周期。一個(gè)活動(dòng)類別除了oncreate方法之外,還預(yù)先定義了onpause(暫停)、onresume(繼續(xù))等的基本方法,當(dāng)從一個(gè)活動(dòng)切換到另

48、一個(gè)活動(dòng)的時(shí)候,原來(lái)的活動(dòng)將經(jīng)過(guò)一連串的狀態(tài)改變。開發(fā)者可以在程序中添加一些各狀態(tài)相對(duì)應(yīng)的流程,每次活動(dòng)狀態(tài)改變時(shí),就會(huì)執(zhí)行相對(duì)應(yīng)的流程。要讓用戶有好的使用體驗(yàn),活動(dòng)需要在各個(gè)周期中負(fù)責(zé)保管狀態(tài)、恢復(fù)狀態(tài)、傳送資料等工作。3.4.1 活動(dòng)的生命狀態(tài)android的虛擬機(jī)是使用堆棧管理。主要有四種狀態(tài):(l)活動(dòng)狀態(tài)活動(dòng)狀態(tài)是指用戶啟動(dòng)應(yīng)用程序或活動(dòng)后,活動(dòng)運(yùn)行中的狀態(tài)。在android平臺(tái)上,同一個(gè)時(shí)刻只會(huì)有一個(gè)活動(dòng)處于活動(dòng)或運(yùn)行狀態(tài)。其他的活動(dòng)都處于未啟動(dòng)、停止或是暫停的狀態(tài)。(2)暫停狀態(tài)暫停狀態(tài)是指當(dāng)活動(dòng)暫時(shí)暗下來(lái),退到背景畫面的狀態(tài)。當(dāng)警告對(duì)話框或電話來(lái)了時(shí),都會(huì)讓原來(lái)運(yùn)行的活動(dòng)退到背

49、景畫面。新出現(xiàn)的警告對(duì)話框等界面元件蓋住了原來(lái)的活動(dòng)畫面。活動(dòng)處在暫停狀態(tài)時(shí),用戶無(wú)法與原活動(dòng)互動(dòng)。(3)停止?fàn)顟B(tài)停止?fàn)顟B(tài)是指有其他活動(dòng)正在執(zhí)行,而這個(gè)活動(dòng)己經(jīng)離開屏幕,不再動(dòng)作的狀態(tài)。通過(guò)按返回鍵,可以調(diào)出所有處于停止?fàn)顟B(tài)的應(yīng)用程序列表。處于停止?fàn)顟B(tài)的活動(dòng),還可以通過(guò)通知來(lái)喚醒。(4)已回收或未啟動(dòng)狀態(tài)已回收或未啟動(dòng)狀態(tài)是指活動(dòng)尚未被啟動(dòng)、已經(jīng)被手動(dòng)終止或己經(jīng)被系統(tǒng)回收的狀態(tài)。要手動(dòng)終止活動(dòng),可以在程序中調(diào)用finish方法。如果是被系統(tǒng)回收,可能是因?yàn)閮?nèi)存不足了,所以系統(tǒng)根據(jù)內(nèi)存不足時(shí)的回收規(guī)則,將處于停止?fàn)顟B(tài)的活動(dòng)所占用的內(nèi)存回收。圖3-1 android活動(dòng)生命周期圖3-1所示的七個(gè)狀

50、態(tài)又可以歸納成三組:(l)資源分配(創(chuàng)建/銷毀)完整的活動(dòng)生命周期由創(chuàng)建狀態(tài)開始,由銷毀狀態(tài)結(jié)束。創(chuàng)建時(shí)分配資源,銷毀時(shí)釋放資源。(2)可見與不可見(啟動(dòng)/重新啟動(dòng)/停止)當(dāng)活動(dòng)運(yùn)行到啟動(dòng)狀態(tài)時(shí),就可以在屏幕上看到這個(gè)活動(dòng)。相反地,當(dāng)活動(dòng)運(yùn)行到停止?fàn)顟B(tài)時(shí),這個(gè)活動(dòng)就會(huì)從屏幕上消失。當(dāng)用戶按下返回鍵回到上一個(gè)活動(dòng)時(shí),會(huì)先到重新啟動(dòng)狀態(tài),再到一般的啟動(dòng)狀態(tài)。(3)用戶取得屏幕的控制權(quán)(繼續(xù)/暫停)當(dāng)有個(gè)警告對(duì)話框、短信、電話等信息進(jìn)入時(shí),原來(lái)的活動(dòng)會(huì)進(jìn)入暫停狀態(tài),暫時(shí)放棄屏幕的控制權(quán),被中斷到背景去,將前景交給優(yōu)先級(jí)高的事件。當(dāng)這些優(yōu)先級(jí)高的事件處理完后,活動(dòng)就改進(jìn)入繼續(xù)狀態(tài),此時(shí)又取得屏幕的控制

51、權(quán)。3.4.2 活動(dòng)的運(yùn)作流程由實(shí)際運(yùn)行來(lái)看,我們可以歸納出所有android應(yīng)用程序都遵循的運(yùn)作流程:(l)一般啟動(dòng)啟動(dòng)一個(gè)活動(dòng)的基本流程為oncreate一onstart一onresume。該流程首先分配資源給這個(gè)活動(dòng)(創(chuàng)建狀態(tài)),然后將活動(dòng)的內(nèi)容顯示到屏幕上(啟動(dòng)狀態(tài));在一切就緒后,取得屏幕的控制權(quán)(恢復(fù)狀態(tài)),用戶可以開始使用這個(gè)程序。(2)調(diào)用另一個(gè)活動(dòng)調(diào)用另一個(gè)活動(dòng)的基本流程為onpause(l)一oncreate(2)一onstart(2)一0nresume(2)一onstop(l)。該流程首先凍結(jié)原來(lái)的活動(dòng),再交出屏幕控制權(quán);直到活動(dòng)2完成一般啟動(dòng)流程后,活動(dòng)1才會(huì)被停止。(

52、3)回到原來(lái)活動(dòng)回到原來(lái)活動(dòng)的基本流程為onpause(2)一onrestart(1)一onstart(l)一onresume(1)一onstop(2)一ondestroy(2)。另外按返回鍵也可以回到原來(lái)的活動(dòng)。(4)退出結(jié)束退出結(jié)束的基本流程為onpause一onstop一ondestroy。如果程序中有直接調(diào)用finish方法來(lái)關(guān)閉活動(dòng)的話,系統(tǒng)會(huì)跳過(guò)先凍結(jié)的階段,直接暫停,停止,然后銷毀。(5)回收后再啟動(dòng)回收后再啟動(dòng)的基本流程為oncreate一onstart一onresume。如果被回收掉的活動(dòng)一旦又重新被調(diào)用時(shí),會(huì)像一般啟動(dòng)一樣再次調(diào)用活動(dòng)的oncreate方法。當(dāng)在模擬器上已經(jīng)

53、執(zhí)行過(guò)多個(gè)應(yīng)用程序,只要按下返回鍵,就會(huì)開啟最近一次開啟過(guò)的活動(dòng)。這時(shí)要是按下多次返回鍵,理論上遲早會(huì)返回到某個(gè)已經(jīng)銷毀的活動(dòng)。如果應(yīng)該開啟的活動(dòng)己經(jīng)被回收了,那么這個(gè)活動(dòng)會(huì)再次被創(chuàng)建。再次被創(chuàng)建的活動(dòng),跟原來(lái)開啟過(guò)的活動(dòng)是不一樣的。所以如果要讓再次被創(chuàng)建的活動(dòng)跟原來(lái)開啟過(guò)的一樣,那么在活動(dòng)之間切換時(shí),就要保存資料:即在每次活動(dòng)運(yùn)行到暫?;蛲V?fàn)顟B(tài)時(shí)先保存資料,然后在創(chuàng)建時(shí)將資料讀出來(lái)。第4章 手機(jī)短信軟件設(shè)計(jì)實(shí)現(xiàn)第4章 手機(jī)短信軟件設(shè)計(jì)實(shí)現(xiàn)4.1 系統(tǒng)設(shè)計(jì)需求4.1.1 需求分析設(shè)計(jì)需要結(jié)合使用幾種技術(shù)。eclipse平臺(tái):eclipse 是一個(gè)運(yùn)行插件的平臺(tái)??梢韵螺d安裝 eclipse

54、classic 的最新版本。android developer tools:按照安裝說(shuō)明安裝 android developer tools(eclipse 插件)。源代碼:本設(shè)計(jì)中的源代碼片段包括:androidmanifest.xml(片段) 這個(gè)文件是 android 應(yīng)用程序的應(yīng)用程序部署描述符。intentreceiver 演示intentreceiver的實(shí)現(xiàn),這個(gè)類處理 androidmanifest.xml 文件中intentfilter標(biāo)記所公布的 intent。main.xml 這個(gè)文件包含 android 活動(dòng)所用的視覺元素或資源。r.java 這個(gè)文件是由 androi

55、d developer tools 自動(dòng)生成的,它把視覺資源 “連接” 到 java 源代碼。androidmanifest.xml(完整) 這是完整的 androidmanifest.xml 文件,包含每個(gè)重要元素的描述。4.1.2 下載開發(fā)資源(l)首先打開網(wǎng)址http://android/download.html來(lái)下載最新的androidsdk。國(guó)內(nèi)基本是用windows系統(tǒng),所以就選擇windows版本的sdk。下載后直接解壓縮就可以使用,為了在控制臺(tái)中直接使用sdk中的工具,把sdk目錄添加到windows的path環(huán)境變量中。圖4-1 通過(guò)eclipse下載an

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論