版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、中國地質(zhì)大學(xué)(武漢)遠(yuǎn)程與繼續(xù)教育學(xué)院畢業(yè)設(shè)計(jì)(論文)遠(yuǎn)程與繼續(xù)教育學(xué)院本科畢業(yè)論文(設(shè)計(jì))題目:基于Android掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn) 學(xué)習(xí)中心: XXXXXXXXXXXX 學(xué) 號(hào): XXXXXXXXXXXX 姓 名: XXX 專 業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 指導(dǎo)教師: XXXX 2015 年 8 月 14 日 中國地質(zhì)大學(xué)(武漢)遠(yuǎn)程與繼續(xù)教育學(xué)院本科畢業(yè)論文(設(shè)計(jì))指導(dǎo)教師指導(dǎo)意見表學(xué)生姓名: XXXXXX 學(xué)號(hào): XXXXXXXXXXXX 專業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 畢業(yè)設(shè)計(jì)(論文)題目: 基于Android掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn) 指導(dǎo)教師意見:(請(qǐng)對(duì)論文的學(xué)術(shù)水平做出簡要評(píng)述。包括選題意義;
2、文獻(xiàn)資料的掌握;所用資料、實(shí)驗(yàn)結(jié)果和計(jì)算數(shù)據(jù)的可靠性;寫作規(guī)范和邏輯性;文獻(xiàn)引用的規(guī)范性等。還須明確指出論文中存在的問題和不足之處。)1、 論文內(nèi)容比較完整,經(jīng)過修改,論文結(jié)構(gòu)合理,達(dá)到本科論文要求。2、 論文能結(jié)合現(xiàn)在的實(shí)際社會(huì)需求選題,具有一定的實(shí)用性。論文合格。指導(dǎo)教師結(jié)論: 合格 (合格、不合格)指導(dǎo)教師姓名XX所在單位XXXXXXXX學(xué)院指導(dǎo)時(shí)間2015.9.30中國地質(zhì)大學(xué)(武漢)遠(yuǎn)程與繼續(xù)教育學(xué)院 本科畢業(yè)設(shè)計(jì)(論文)評(píng)閱教師評(píng)閱意見表 學(xué)生姓名: XXXXXX 學(xué)號(hào): XXXXXXXXXXXX 專業(yè): 計(jì)算機(jī)科學(xué)與技術(shù) 畢業(yè)設(shè)計(jì)(論文)題目: 基于Android掃雷游戲的設(shè)計(jì)與
3、實(shí)現(xiàn) 評(píng)閱意見:(請(qǐng)對(duì)論文的學(xué)術(shù)水平做出簡要評(píng)述。包括選題意義;文獻(xiàn)資料的掌握;所用資料、實(shí)驗(yàn)結(jié)果和計(jì)算數(shù)據(jù)的可靠性;寫作規(guī)范和邏輯性;文獻(xiàn)引用的規(guī)范性等。還須明確指出論文中存在的問題和不足之處。)論文設(shè)計(jì)實(shí)現(xiàn)了基于Android平臺(tái)的掃雷游戲。首先論述了Android系統(tǒng)的背景和研究現(xiàn)狀、android的技術(shù)及對(duì)Android分析,并介紹了Android應(yīng)用程序的結(jié)構(gòu)。在程序開發(fā)中,采用了先設(shè)計(jì)好游戲的類框架,然后按照各個(gè)類的實(shí)現(xiàn)進(jìn)行代碼的編寫與實(shí)現(xiàn)功能。所完成工作達(dá)到了我校本科畢業(yè)設(shè)計(jì)的要求,同意參加答辯。修改意見:(針對(duì)上面提出的問題和不足之處提出具體修改意見。評(píng)閱成績合格,并可不用修改
4、直接參加答辯的不必填此意見。)畢業(yè)設(shè)計(jì)(論文)評(píng)閱成績 (百分制): 75 評(píng)閱結(jié)論: 同意答辯 (同意答辯、不同意答辯、修改后答辯)評(píng)閱人姓名XXX所在單位計(jì)算機(jī)學(xué)院評(píng)閱時(shí)間2015-10-11論文原創(chuàng)性聲明本人鄭重聲明:本人所呈交的本科畢業(yè)論文基于Android掃雷游戲的設(shè)計(jì)與實(shí)現(xiàn),是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究工作所取得的成果。論文中引用他人的文獻(xiàn)、資料均已明確注出,論文中的結(jié)論和結(jié)果為本人獨(dú)立完成,不包含他人成果及使用過的材料。對(duì)論文的完成提供過幫助的有關(guān)人員已在文中說明并致以謝意。本人所呈交的本科畢業(yè)論文沒有違反學(xué)術(shù)道德和學(xué)術(shù)規(guī)范,沒有侵權(quán)行為,并愿意承擔(dān)由此而產(chǎn)生的法律責(zé)任和法律
5、后果。 論文作者(簽字):XXX日期:2015年8月14日3摘 要隨著技術(shù)通信不斷進(jìn)步,移動(dòng)通信終端設(shè)備的功能也在不斷地增長,朝著智能化的方向發(fā)展。手機(jī)已經(jīng)不再是個(gè)單一的通信設(shè)備,而是逐漸融合了個(gè)人信息管理,無線上網(wǎng),移動(dòng)辦公,影音娛樂等功能,成為筆記本電腦之外的另一種更便攜,更易用的辦公平臺(tái)。因此,手機(jī)的娛樂應(yīng)用服務(wù)將會(huì)有很大的發(fā)展空間,游戲也是其中之一。本系統(tǒng)主要是實(shí)現(xiàn)基于Android平臺(tái)的掃雷游戲,掃雷是一款古老的益智游戲,其設(shè)計(jì)目的是訓(xùn)練人的邏輯思維能力。本文首先論述了Android系統(tǒng)的背景和研究現(xiàn)狀,接著簡要的介紹了android的技術(shù)及對(duì)Android分析,并且介紹了Andro
6、id應(yīng)用程序的結(jié)構(gòu)。在程序開發(fā)中,采用了先設(shè)計(jì)好游戲的類框架,然后按照各個(gè)類的實(shí)現(xiàn)進(jìn)行代碼的編寫與實(shí)現(xiàn)功能。關(guān)鍵詞: 1、智能化 2、 Android 3、掃雷 目 錄一、緒論7(一) Android概述7(二)系統(tǒng)開發(fā)背景7二 、系統(tǒng)技術(shù)分析9(一) Eclipse集成開發(fā)環(huán)境9(二) JDK11(三) Android SDK12(四) ADT12三、Android應(yīng)用程序結(jié)構(gòu)剖析14(一) Android系統(tǒng)架構(gòu)研究14(二) Android的API14(三)Android應(yīng)用程序結(jié)構(gòu)解析15(四) Intent的詳細(xì)解析17(五) Android活動(dòng)的生命周期19四、系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)23(
7、一)游戲的策劃23(二)游戲基本功能描述23(三)系統(tǒng)詳細(xì)設(shè)計(jì)24五、結(jié)論28致謝29參考文獻(xiàn)30 29中國地質(zhì)大學(xué)(武漢)遠(yuǎn)程與繼續(xù)教育學(xué)院本科畢業(yè)設(shè)計(jì)(論文)一、緒論(一) Android概述智能手機(jī)(Smartphone),具有獨(dú)立的操作系統(tǒng),像個(gè)人電腦一樣支持用戶自行安裝軟件、游戲等第三方服務(wù)商提供的程序,并通過此類程序不斷對(duì)手機(jī)的功能進(jìn)行擴(kuò)充,同時(shí)可通過移動(dòng)通訊網(wǎng)絡(luò)來實(shí)現(xiàn)無線網(wǎng)絡(luò)接入。目前,全球多數(shù)手機(jī)廠商都有智能手機(jī)產(chǎn)品,而芬蘭諾基亞、美國蘋果、加拿大RIM(黑莓)、美國摩托羅拉、中國臺(tái)灣宏達(dá)(htc)更是智能機(jī)中的佼佼者。智能手機(jī)具有五大特點(diǎn):1. 具備了無線接入互聯(lián)網(wǎng)的能力,即
8、要有GSM的支持網(wǎng)絡(luò)下的GPRS或者是CDMA網(wǎng)絡(luò)支持下的CDMA 1X或3G網(wǎng)絡(luò)。2. 人性化,可以根據(jù)個(gè)人需要擴(kuò)展機(jī)器的功能。3. 它是具有開放性的操作系統(tǒng),還可以安裝非常多的應(yīng)用程序,使得智能手機(jī)的功能可以得到無限的擴(kuò)展。4. 具有PDA功能,其中包括個(gè)人信息管理、日程記事、任務(wù)安排、多媒體應(yīng)用、瀏覽網(wǎng)頁。5.強(qiáng)大的功能,擴(kuò)展性能強(qiáng),第三方軟件支持多。在二零零五年七月,Google收購了 Android,這么一個(gè)小規(guī)模收購行動(dòng)還是立刻引起了移動(dòng)業(yè)界的興趣,它們懷疑這是 Google 進(jìn)入移動(dòng)市場的的標(biāo)志。盡管如此,這個(gè)當(dāng)時(shí)只是一個(gè)小規(guī)模的移動(dòng)軟件開發(fā)公司正是由 Andy Rubin、Ri
9、ch Miner、Nick Sears 以及 Chris White 四個(gè)人共同創(chuàng)建的?,F(xiàn)在看來,他們的懷疑是正確的。差不多兩年半以后,在 二零零七 年 十一 月 五 日,Google發(fā)布了Android,它這個(gè)的發(fā)布給移動(dòng)業(yè)界帶來了一場可怕的風(fēng)暴,基于 Linux的全新移動(dòng)操作系統(tǒng)。這不單單是一個(gè)全新的移動(dòng)系統(tǒng),非常重要的是:它是開源的。從 Android 的發(fā)展旅途中,我們看到 2003 年 Andy他是一個(gè)有遠(yuǎn)見的人,看到了 2005 年的起步和被 Google 的收購,也看到了系統(tǒng)的進(jìn)步以及新的機(jī)型的快速發(fā)布。所有這一切都讓我們相信,Android 將會(huì)走向世界第一移動(dòng)操作系統(tǒng)寶座的步
10、伐是勢不可擋的。Android 平板電腦也在今年的夏天開始發(fā)布以及 Google TV 發(fā)布以后(也許還有 Google Music?),Android 可能真的會(huì)將繼續(xù)帶著我們走向移動(dòng)設(shè)備夢想的彼岸。(二)系統(tǒng)開發(fā)背景在我們的生活中有許多的游戲,但是游戲不同,它也會(huì)給玩家?guī)聿煌母惺芎蜕罾砟睢S螒蚴俏覀內(nèi)粘I畹囊粋€(gè)必不可少的娛樂項(xiàng)目,也帶動(dòng)了游戲相關(guān)產(chǎn)業(yè)市場的發(fā)展。游戲平臺(tái)是經(jīng)過從游戲機(jī)到電視游戲,然后從到pc游戲,到手機(jī)游戲,中間經(jīng)歷了很多的技術(shù)的更新和變革。但隨著新技術(shù)的發(fā)展和我們生活水平質(zhì)量的提高,手機(jī)開始逐漸變?yōu)槠占?,因?yàn)槭謾C(jī)是非常小巧便捷的,而且方便的特性成為我們?nèi)粘I钪斜?/p>
11、備通訊工具。而基于手機(jī)平臺(tái)的游戲也就擁有的市場空間是巨大的,也因隨著3g的開通和應(yīng)用,手機(jī)游戲必然會(huì)迎來新的一輪游戲熱潮!掃雷最原始的版本可以追溯到1973年一款名為“方塊”的游戲。久之后,“方塊”被改寫成了游戲“Rlogic”。在“Rlogic”里,玩家的任務(wù)是作為美國海軍陸戰(zhàn)隊(duì)隊(duì)員,為指揮中心探出一條沒有地雷的安全路線,如果路全被地雷堵死就算輸。兩年后,湯姆·安德森在“Rlogic”的基礎(chǔ)上又編寫出了游戲“地雷”,由此奠定了現(xiàn)代掃雷游戲的雛形。1981年, 微軟公司的羅伯特·杜爾 和卡特·約翰遜兩位工程師在Windows 3.1系統(tǒng)上加載了該游戲,掃雷游戲才正
12、式在全世界推廣開來。這款游戲的玩法是在一個(gè)9*9(初級(jí)),16*16(中級(jí)),16*30(高級(jí)),或自定義大小的方塊矩陣中隨機(jī)布置一定量的地雷(初級(jí)為10個(gè),中級(jí)為40個(gè),高級(jí)為99個(gè))。由玩家逐個(gè)翻開方塊,以找出所有地雷為最終游戲目標(biāo)。如果玩家翻開的方塊有地雷,則游戲結(jié)束。掃雷游戲的目標(biāo)是盡快找到雷區(qū)中的所有不是地雷的方塊,而不許踩到地雷。點(diǎn)開的數(shù)字是幾,則說明該數(shù)字旁邊的8個(gè)位置中有幾個(gè)雷,如果挖開的是地雷,則會(huì)輸?shù)粲螒颉呃子螒蚴且豢钜嬷穷愑螒?,目前基于Android平臺(tái)的掃雷游戲還比較少,本系統(tǒng)的開發(fā)主要面向Android平臺(tái),以滿足廣大手機(jī)用戶的需要。二 、系統(tǒng)技術(shù)分析(一) Ecl
13、ipse集成開發(fā)環(huán)境Eclipse是著名的跨平臺(tái)的自由集成開發(fā)環(huán)境(IDE)。最初主要用來Java語言開發(fā),但是目前亦有人通過插件使其作為其他計(jì)算機(jī)語言比如C+和Python的開發(fā)工具。下圖2-1是進(jìn)入Eclipse里的界面:圖2-1 進(jìn)入Eclipse里的編輯界面Eclipse的本身只是一個(gè)框架平臺(tái),但是眾多插件的支持使得Eclipse擁有其他功能相對(duì)固定的IDE軟件很難具有的靈活性。許多軟件開發(fā)商以Eclipse為框架開發(fā)自己的IDE。Eclipse最初是由IBM公司開發(fā)的替代商業(yè)軟件Visual Age for Java的下一代IDE開發(fā)環(huán)境,2001年11月貢獻(xiàn)給開源社區(qū),現(xiàn)在它由非營
14、利軟件供應(yīng)商聯(lián)盟Eclipse基金會(huì)(Eclipse Foundation)管理。 2003年,Eclipse 3.0選擇OSGi服務(wù)平臺(tái)規(guī)范為運(yùn)行時(shí)架構(gòu)。 2007年6月,穩(wěn)定版3.3發(fā)布。2008年6月發(fā)布代號(hào)為Ganymede的3.4版。Eclipse的基礎(chǔ)是富客戶機(jī)平臺(tái)(Rich Client Platform, 即RCP)。RCP包括下列組件:核心平臺(tái)(啟動(dòng)Eclipse,運(yùn)行插件)OSGi(標(biāo)準(zhǔn)集束框架)SWT(可移植構(gòu)件工具包)JFace(文件緩沖,文本處理,文本編輯器)Eclipse工作臺(tái)(即Workbench ,包含視圖(views)、編輯器(editors)、視角(pers
15、pectives)、和向?qū)В╳izards)Eclipse采用的技術(shù)是IBM公司開發(fā)的(SWT),這是一種基于Java的窗口組件,類似Java本身提供的AWT和Swing窗口組件;不過IBM聲稱SWT比其他Java窗口組件更有效率。Eclipse的用戶界面還使用了GUI中間層JFace,從而簡化了基于SWT的應(yīng)用程序的構(gòu)建。Eclipse的插件機(jī)制是輕型軟件組件化架構(gòu)。在富客戶機(jī)平臺(tái)上,Eclipse使用插件來提供所有的附加功能,例如支持Java以外的其他語 言。 已有的分離的插件已經(jīng)能夠支持C/C+(CDT)、Perl、Ruby,Python、telnet和數(shù)據(jù)庫開發(fā)。插件架構(gòu)能夠支持將任意
16、的擴(kuò)展加入到 現(xiàn)有環(huán)境中,例如配置管理,而決不僅僅限于支持各種編程語言。Eclipse的設(shè)計(jì)思想是:一切皆插件。Eclipse核心很小,其它所有功能都以插件的形式附加于Eclipse核心之上。Eclipse基本內(nèi)核包括:圖形API (SWT/Jface), Java開發(fā)環(huán)境插件(JDT ),插件開發(fā)環(huán)境(PDE)等。Eclipse由各種不同的計(jì)劃組成。以下列出了部分計(jì)劃。Eclipse計(jì)劃:本身包括Eclipse平臺(tái),Eclipse富客戶端平臺(tái)(RCP)和Java開發(fā)工具(JDT)。Eclipse測試和性能工具平臺(tái)(TPTP):提供一個(gè)允許軟件開發(fā)者構(gòu)建諸如測試調(diào)試、概況分析、基準(zhǔn)評(píng)測等測試和
17、性能工具的平臺(tái)。Eclipse Web工具平臺(tái)計(jì)劃 (WTP):用Java企業(yè)版Web應(yīng)用程序開發(fā)工具來擴(kuò)展Eclipse平臺(tái)。它由以下部分組成:HTML、JavaScript、CSS、JSP、SQL、XML、DTD、XSD和WSDL的 源代碼編輯器;XSD和WSDL的圖形界面編輯器;Java企業(yè)版的“項(xiàng)目性質(zhì)”(project nature)、建構(gòu)器(builder)和模型(model),與一個(gè)Java企業(yè)版的導(dǎo)航(navigator);一個(gè)Web服務(wù)(Web service)向?qū)Ш蜑g覽器,還有一個(gè)WS-I測試工具;最后是數(shù)據(jù)庫訪問查詢的工具與模型。Eclipse商業(yè)智能和報(bào)表工具
18、計(jì)劃(BIRT):提供Web應(yīng)用程序(特別是基于Java企業(yè)版的)的報(bào)表開發(fā)工具。Eclipse可視化界面編輯器計(jì)劃(VEP):一個(gè)Eclipse下創(chuàng)建圖形用戶界面代碼生成器的框架。Eclipse建??蚣埽‥MF):依據(jù)使用XMI描述的建模規(guī)格,生成結(jié)構(gòu)化數(shù)據(jù)模型的工具和其他應(yīng)用程序的代碼。圖形化編輯器框架(GEF):能讓開發(fā)者采用一個(gè)現(xiàn)成的應(yīng)用程序模型來輕松地創(chuàng)建富圖形化編輯器。UML2:Eclipse平臺(tái)下的一個(gè)UML 2.0元模型的實(shí)現(xiàn),用以支持建模工具的開發(fā)。AspectJ:一種針對(duì)Java的面向側(cè)面語言擴(kuò)展。Eclipse通訊框架(ECF):專注于在Eclipse平臺(tái)上創(chuàng)建通訊應(yīng)用程
19、序的工作。Eclipse數(shù)據(jù)工具平臺(tái)計(jì)劃(DTP)Eclipse設(shè)備驅(qū)動(dòng)軟件開發(fā)計(jì)劃(DSDP)C/C+開發(fā)工具計(jì)劃(CDT):努力為Eclipse平臺(tái)提供一個(gè)全功能C和C+的集成開發(fā)環(huán)境(IDE),它使用GCC作為編譯器。Eclipse平臺(tái)COBOL集成開發(fā)環(huán)境子計(jì)劃(COBOL):將構(gòu)建一個(gè)Eclipse平臺(tái)上的全功能COBOL集成開發(fā)環(huán)境。并行工具平臺(tái)(PTP):將開發(fā)一個(gè)對(duì)并行計(jì)算機(jī)架構(gòu)下的一組工具進(jìn)行集成的平行工具平臺(tái),而且這個(gè)平臺(tái)是可移植的,可伸縮的并基于標(biāo)準(zhǔn)的。嵌入式富客戶端平臺(tái)(eRCP):計(jì)劃將Eclipse富客戶端平臺(tái)擴(kuò)展到嵌入式設(shè)備上。這個(gè)平臺(tái)主要是一個(gè)富客戶端平臺(tái)(RC
20、P)組件子集的集合。它能讓桌面環(huán)境下的應(yīng)用程序模型能夠大致同樣地能運(yùn)用在嵌入式設(shè)備上。(二) JDKJDK(Java Development Kit)是Sun Microsystems針對(duì)Java開發(fā)員的產(chǎn)品。自從Java推出以來,JDK已經(jīng)成為使用最廣泛的Java SDK。JDK 是整個(gè)Java的核心,包括了Java運(yùn)行環(huán)境、Java工具和Java基礎(chǔ)類庫。JDK是學(xué)好Java的第一步。而專門運(yùn)行在x86平臺(tái)的Jrocket在服務(wù)端運(yùn)行效率也要比Sun JDK好很多。從SUN的JDK5.0開始,提供了泛型等非常實(shí)用的功能,其版本也不斷更新,運(yùn)行效率得到了非常大的提高。JDK包含的基本組件包括
21、:javac 編譯器,將源程序轉(zhuǎn)成字節(jié)碼jar 打包工具,將相關(guān)的類文件打包成一個(gè)文件javadoc 文檔生成器,從源碼注釋中提取文檔jdb debugger,查錯(cuò)工具java 運(yùn)行編譯后的java程序(.class后綴的)appletviewer:小程序?yàn)g覽器,一種執(zhí)行HTML文件上的Java小程序的Java瀏覽器。Javah:產(chǎn)生可以調(diào)用Java過程的C過程,或建立能被Java程序調(diào)用的C過程的頭文件。Javap:Java反匯編器,顯示編譯類文件中的可訪問功能和數(shù)據(jù),同時(shí)顯示字節(jié)代碼含義。Jconsole: Java進(jìn)行系統(tǒng)調(diào)試和監(jiān)控的工具(三) Android SDKSDK:(softw
22、are development kit)軟件開發(fā)工具包。被軟件開發(fā)工程師用于為特定的軟件包、軟件框架、硬件平臺(tái)、操作系統(tǒng)等建立應(yīng)用軟件的開發(fā)工具的集合。因此,Android SDK 指的既是Android專屬的軟件開發(fā)工具包。其最震撼人心之處在于Android手機(jī)系統(tǒng)的開放性和服務(wù)免費(fèi)。Android是一個(gè)對(duì)第三方軟件完全開放的平臺(tái),開發(fā)者在為其開發(fā)程序時(shí) 擁有更大的自由度,突破了iPhone等只能添加為數(shù)不多的固定軟件的枷鎖。(四) ADT抽象數(shù)據(jù)類型(Abstract Data Type)是指一個(gè)數(shù)學(xué)模型以及定義在該模型上的一組操作。ADT包括數(shù)據(jù)數(shù)據(jù)元素,數(shù)據(jù)關(guān)系以及相關(guān)的操作。即ADT
23、數(shù)據(jù)對(duì)象:(數(shù)據(jù)元素集合)數(shù)據(jù)關(guān)系:(數(shù)據(jù)關(guān)系二元組結(jié)合)基本操作:(操作函數(shù)的羅列)抽象數(shù)據(jù)類型(ADT)的一個(gè)實(shí)現(xiàn)包括儲(chǔ)存數(shù)據(jù)元素的存儲(chǔ)結(jié)構(gòu)以及實(shí)現(xiàn)基本操作的算法。在這個(gè)數(shù)據(jù)抽象思想中,數(shù)據(jù)類型的定義和它的實(shí)現(xiàn)是分開的,這在軟件設(shè)計(jì)中是一個(gè)重要的概念。這使得只研究和使用它的結(jié)構(gòu)而不用考慮它的實(shí)現(xiàn)細(xì)節(jié)成為可能。在面向?qū)ο缶幊陶Z言中,像C+、Java都能較好的支持ADT,如類的機(jī)制。而在C語言中缺少了對(duì)相關(guān)方法的支持。抽象數(shù)據(jù)類型需要通過固有數(shù)據(jù)類型(高級(jí)編程語言中已實(shí)現(xiàn)的數(shù)據(jù)類型)來實(shí)現(xiàn)。抽象數(shù)據(jù)類型是與表示無關(guān)的數(shù)據(jù)類型,是一個(gè)數(shù)據(jù)模型及定義在該模型上的一組運(yùn)算。對(duì)一個(gè)抽象數(shù)據(jù)類型進(jìn)行定義
24、時(shí),必須給出它的名字及各運(yùn)算的運(yùn)算符名,即函數(shù)名,并且規(guī)定這些函數(shù)的參數(shù)性質(zhì)。一旦定義了一個(gè)抽象數(shù)據(jù)類型及具體實(shí)現(xiàn),程序設(shè)計(jì)中就可以像使用基本數(shù)據(jù)類型那樣,十分方便地使用抽象數(shù)據(jù)類型。三、Android應(yīng)用程序結(jié)構(gòu)剖析(一) Android系統(tǒng)架構(gòu)研究Android是一個(gè)包含操作系統(tǒng)、中介架構(gòu)層及應(yīng)用程序所產(chǎn)生出來的軟件堆棧架構(gòu)。由下而上,其核心為嵌入式Linux2.6作業(yè)系統(tǒng),向上搭配Google為Android開發(fā)的類庫及Android運(yùn)行時(shí),再配合應(yīng)用程序架構(gòu),來開發(fā)各種不同的應(yīng)用程序。Android體系結(jié)構(gòu)如下所示:圖3-1 Android體系結(jié)構(gòu)(二) Android的APIAndr
25、oid API主要包含了以下幾個(gè)部分:(1)AndroidManifest.xmlAndroidManifest.xml是系統(tǒng)的控制文件,它告訴系統(tǒng)如何處理所創(chuàng)建的所有應(yīng)用組件(尤其是活動(dòng)(Activity),服務(wù)(Service),意圖接收器(Intent Receiver)和內(nèi)容提供者(Content Provider)。舉例來說,控制文件就是把活動(dòng)和要接收的意圖(Intents)連接在一起的“膠水”。(2)活動(dòng)活動(dòng)就是一個(gè)有生命周期的對(duì)象。一個(gè)活動(dòng)就是完成某些工作的代碼塊,這部分工作還可能包括對(duì)用戶UI界面的顯示。不過這不是必須的,有些活動(dòng)從不顯示UI界面。(3)視圖視圖可以將其自身繪制
26、到屏幕上。Android的用戶界面由一系列的視圖樹構(gòu)成。接口都是由一組以樹的形式出現(xiàn)的視圖組成的。開發(fā)者可以通過創(chuàng)建一個(gè)新的視圖的方法來使用自定義的圖形處理技術(shù)(比如開發(fā)游戲,或者是使用了不常用的用戶圖形窗口界面)。(4)意圖意圖是一個(gè)簡單的消息對(duì)象,它表示程序想做某事的“意圖”。比如應(yīng)用程序想要顯示一個(gè)網(wǎng)頁,那么它可以通過創(chuàng)建一個(gè)Intent實(shí)例并將其傳遞給系統(tǒng)來表示意圖瀏覽這個(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)行
27、在其他應(yīng)用程序的進(jìn)程里,這取決于自身的需要.。其它的組件可以綁定到一個(gè)服務(wù)上來,通過遠(yuǎn)程過程調(diào)用(RPC)來調(diào)用這個(gè)方法。例如媒體播放器的服務(wù),當(dāng)用戶退出媒體選擇的界面時(shí),仍然希望音樂依然可以繼續(xù)播放,這時(shí)就可用服務(wù)來保證當(dāng)用戶界面關(guān)閉時(shí)音樂還繼續(xù)播放著。 (6)通知通知將以小圖標(biāo)的形式呈現(xiàn)在狀態(tài)欄里,用戶通過與圖標(biāo)的交互來接收消息。最常見的通知包括短信息、通話記錄和語音郵件,但是應(yīng)用程序也可以創(chuàng)建它們自己的通知事件。(7)內(nèi)容提供者內(nèi)容提供者是用來提供對(duì)設(shè)備上數(shù)據(jù)進(jìn)行訪問。典型的例子就是使用內(nèi)容提供者來訪問聯(lián)系人列表。應(yīng)用程序也可以使用其它程序通過內(nèi)容提供者提供的數(shù)據(jù),同時(shí)也可以定義自己的內(nèi)
28、容提供者來向其它應(yīng)用提供數(shù)據(jù)訪問服務(wù)。(三)Android應(yīng)用程序結(jié)構(gòu)解析通常由以下四個(gè)組件來構(gòu)建一個(gè)完整的Android應(yīng)用程序?;顒?dòng)意圖接收器服務(wù)內(nèi)容提供者然而,并不是所有的Android應(yīng)用程序都必須具備上面的四個(gè)組件,可以由上面的一個(gè)或幾個(gè)來組建。當(dāng)決定使用以上哪些組件來構(gòu)建Android應(yīng)用程序時(shí),需要將它們注冊(cè)在AndroidManifest.xml文件中,這是一個(gè)XML配置文件,在這個(gè)文件中可以聲明應(yīng)用程序組件以及它們的特性和要求。這個(gè)配置文件是每個(gè)Android應(yīng)用程序所必需的。 1、活動(dòng)活動(dòng)是以上四個(gè)組件中最常用的一個(gè)。每個(gè)活動(dòng)都是Activity的子類,并實(shí)現(xiàn)了一些獨(dú)有的功
29、能,如管理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)。顯示一個(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í),可以將它們從歷史堆棧中
30、移除。默認(rèn)情況下,Android會(huì)為每個(gè)應(yīng)用程序保留從主界面開始的歷史堆棧。Android通過一個(gè)被稱作意圖的特殊類,來實(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、VIEW、PICK、EDIT等等,而動(dòng)作對(duì)應(yīng)的數(shù)據(jù)則以URI的形式表示。例如:顯示一個(gè)聯(lián)系人信息的界面,可以創(chuàng)建一個(gè)意圖,并將它的動(dòng)作設(shè)置成VIEW,數(shù)據(jù)設(shè)置成表示這個(gè)人信息的URI。除此之外,還有一個(gè)被稱作意圖過濾器(IntentFiher)的相關(guān)類。當(dāng)發(fā)生一個(gè)有效的目的請(qǐng)求時(shí),意圖過濾器用來描述一個(gè)活動(dòng)能夠處理什么意
31、圖。如上例中所描述,想要正常顯示一個(gè)聯(lián)系人信息的界面,必須聲明一個(gè)意圖過濾器,它說明當(dāng)有聯(lián)系人數(shù)據(jù)要被在界面上顯示時(shí),知道如何處理它們。通常意圖過濾器要被注冊(cè)在AndroidManifest.xml文件中。從一個(gè)界面跳轉(zhuǎn)到另一個(gè)界面是由解析各種意圖實(shí)現(xiàn)的。例如:一個(gè)活動(dòng)使用startActivity(myIntent)來調(diào)用其他活動(dòng)時(shí),系統(tǒng)會(huì)查找所有已經(jīng)安裝的應(yīng)用程序的意圖過濾器,并從中挑選出能夠匹配myIntent意圖的活動(dòng)。隨后,這個(gè)新的活動(dòng)接收到意圖(myIntent)的通知并開始運(yùn)行。當(dāng)startActivity方法被調(diào)用,解析意圖的處理過程隨之發(fā)生,這個(gè)機(jī)制有以下兩個(gè)突出的優(yōu)點(diǎn):活動(dòng)
32、可以通過一個(gè)以意圖形式產(chǎn)生的請(qǐng)求來重用其他組件的功能。活動(dòng)可以在任何時(shí)候被一個(gè)具有等價(jià)意圖過濾器的新活動(dòng)所替代。 2、意圖接收器當(dāng)想要編寫代碼來對(duì)外部事件做一些處理時(shí),可以使用意圖接收器。意圖接收器并不顯示UI界面,它是通過NotificationManager來通知用戶他們感興趣的事件發(fā)生了。意圖接收器同樣可以被注冊(cè)在AndroidManifest.xml文件中,同時(shí)也可以在代碼中使用Context.registerReceiver()來注冊(cè)自己的意圖接收器。當(dāng)一個(gè)意圖接收器被觸發(fā)時(shí),系統(tǒng)會(huì)根據(jù)需要來啟動(dòng)應(yīng)用程序。 3、服務(wù)服務(wù)是具有長生命周期并且沒有用戶界面的代碼。 4、內(nèi)容提供者在And
33、roid中,每個(gè)應(yīng)用程序都是有自己的userID及在自己的進(jìn)程中執(zhí)行。這樣做的好處是,可以保護(hù)系統(tǒng)及應(yīng)用程序,避免被其他不正常的應(yīng)用程序所影響。可以把每個(gè)進(jìn)程想像成是一個(gè)黑盒子,彼此不會(huì)互相影響,連內(nèi)存的資料都無法共享。如果應(yīng)用程序之間想要共享數(shù)據(jù),就需要使用用內(nèi)容提供者。一個(gè)內(nèi)容提供者就是一個(gè)類,它實(shí)現(xiàn)了一個(gè)標(biāo)準(zhǔn)的方法集合。其他的應(yīng)用程序可以使用這些方法來保存和檢索此內(nèi)容提供者處理過的數(shù)據(jù)。(四) Intent的詳細(xì)解析在一個(gè)Android應(yīng)用中,主要是由四種組件組成的,這四種組件可參考上一節(jié)的內(nèi)容。而這四種組件是獨(dú)立的,它們之間可以互相調(diào)用,協(xié)調(diào)工作,最終組成一個(gè)真正的Android應(yīng)用。
34、在這些組件之間的通訊中,主要是由意圖協(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è)媒體中介的作用,專門提供組件之間互相調(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)
35、的查看對(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)用找到的Activity,即為detailActivity,最終傳入Intent,detailActivitv則會(huì)根據(jù)此Intent中的描述,執(zhí)行相應(yīng)的操作。 1、Intent的抽象描述在Android參考文檔中,對(duì)意圖的定義是執(zhí)行某操作的一個(gè)抽象描述。該抽象描述的具體內(nèi)容如下:首先,它是要執(zhí)行的動(dòng)作的一個(gè)簡要描述,如查看、修改等,Android定義
36、了一套標(biāo)準(zhǔn)動(dòng)作。此外,還可以根據(jù)應(yīng)用的需要,定義自己的動(dòng)作,并可定義相應(yīng)的活動(dòng)來處理自定義的動(dòng)作。其次,是執(zhí)行動(dòng)作要操作的數(shù)據(jù),Android采用指向數(shù)據(jù)的一個(gè)URI方式來實(shí)現(xiàn)。另外,除了動(dòng)作和數(shù)據(jù)這兩個(gè)重要屬性外,還有一些附加屬性:類別:被執(zhí)行動(dòng)作的附加信息。例如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)行判定,但是通過設(shè)置這個(gè)屬性,可以強(qiáng)制采用指定的類型。組件
37、:指定意圖的目標(biāo)組件的類名稱。通常Android會(huì)根據(jù)意圖中包含的其它屬性的信息,比如動(dòng)作、數(shù)據(jù)/數(shù)據(jù)類型、類別進(jìn)行查找,最終找到一個(gè)與之匹配的目標(biāo)組件。附加信息:是其它所有附加信息的集合。使用附加信息可以為組件提供擴(kuò)展信息,比如,如果要執(zhí)行“發(fā)送電子郵件”這個(gè)動(dòng)作,可以將電子郵件的標(biāo)題、正文等保存在附加信息里,傳給電子郵件發(fā)送組件??傊?,動(dòng)作、數(shù)據(jù)/數(shù)據(jù)類型、類別和附加信息一起形成了一種語言。這種語言使系統(tǒng)能夠理解諸如“查看某聯(lián)系人的詳細(xì)信息”之類的短語。隨著應(yīng)用不斷的加入到系統(tǒng)中,它們可以添加新的動(dòng)作、數(shù)據(jù)/數(shù)據(jù)類型和類別來擴(kuò)展這種語言。應(yīng)用也可以提供自己的活動(dòng)來處理已經(jīng)存在的這樣的“短語
38、”,從而改變這些“短語”的行為。 2、Android中 Intent的使用在應(yīng)用中,可以以兩種形式來使用Intent:(l)直接意圖:指定了組件屬性的意圖。通過指定具體的組件類,通知應(yīng)用啟動(dòng)對(duì)應(yīng)的組件。(2)間接意圖:沒有指定組件屬性的意圖。這些意圖需要包含足夠的信息,這樣系統(tǒng)才能根據(jù)這些信息,在所有的可用組件中,確定滿足此意圖的組件。對(duì)于直接意圖,Android不需要去做解析,因?yàn)槟繕?biāo)組件已經(jīng)很明確,Android需要解析的是那些間接意圖,通過解析,將意圖映射給可以處理此意圖的活動(dòng)、意圖接收器或服務(wù)。意圖解析機(jī)制主要是通過查找己注冊(cè)在AndroidManifest.xml中的所有意圖過濾器及
39、其中定義的意圖,最終找到匹配的意圖。在這個(gè)解析過程中,Android是通過意圖的動(dòng)作、數(shù)據(jù)類型、類別這三個(gè)屬性來進(jìn)行判斷的,判斷方法如下:如果意圖指明定了動(dòng)作,則目標(biāo)組件的意圖過濾器的動(dòng)作列表中就必須包含有這個(gè)動(dòng)作,否則不能匹配。如果意圖沒有提供數(shù)據(jù)類型,系統(tǒng)將從數(shù)據(jù)中得到數(shù)據(jù)類型。和動(dòng)作一樣,目標(biāo)組件的數(shù)據(jù)類型列表中必須包含意圖的數(shù)據(jù)類型,否則不能匹配。如果意圖中的數(shù)據(jù)不是content:類型的URI,而且意圖也沒有明確指定它的數(shù)據(jù)類型,將根據(jù)意圖中數(shù)據(jù)的格式(比如http:或者mailto:)進(jìn)行匹配。同上,意圖的格式必須出現(xiàn)在目標(biāo)組件的格式列表中。如果意圖指定了一個(gè)或多個(gè)類別,這些類別必
40、須全部出現(xiàn)在組建的類別列表中。比如意圖中包含了兩個(gè)類別:LAUNCHER_CATEGORY和ALTERNATIVEC_CATEGORY,解析得到的目標(biāo)組件必須至少包含這兩個(gè)類別。(五) Android活動(dòng)的生命周期Android平臺(tái)是個(gè)手機(jī)作業(yè)系統(tǒng)。撇掉其他功能不談,手機(jī)的特性,就是應(yīng)該能隨時(shí)在未完成目前動(dòng)作的時(shí)候,暫停正在使用的功能,切換到接電話、接收短信模式,而且在接完電話回到應(yīng)用程序時(shí),還希望能看到一樣的內(nèi)容。現(xiàn)在用戶使用智能手機(jī),大多已習(xí)慣使用多工的作業(yè)系統(tǒng)(如windowsMobile),可以在用手機(jī)聽音樂的同時(shí),執(zhí)行其他多個(gè)程序。同時(shí)執(zhí)行多個(gè)程序有它的明顯好處,但也有它的缺點(diǎn)。每多
41、執(zhí)行一個(gè)應(yīng)用程序,就會(huì)多耗費(fèi)一些系統(tǒng)內(nèi)存,而手機(jī)里的內(nèi)存是相當(dāng)有限的。當(dāng)同時(shí)執(zhí)行的程序過多,或是關(guān)閉的程序沒有正確釋放掉內(nèi)存,系統(tǒng)運(yùn)行時(shí)就會(huì)覺得越來越慢,甚至不穩(wěn)定。為了解決這個(gè)問題,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ā)者,都無法確定應(yīng)用程序何時(shí)會(huì)被回收。關(guān)于進(jìn)程的生命周期將在下一節(jié)中介紹,本節(jié)主要介紹活動(dòng)的生命周期。一個(gè)活動(dòng)類別除了OnC
42、reate方法之外,還預(yù)先定義了onPause(暫停)、OnResume(繼續(xù))等的基本方法,當(dāng)從一個(gè)活動(dòng)切換到另一個(gè)活動(dòng)的時(shí)候,原來的活動(dòng)將經(jīng)過一連串的狀態(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)、傳送資料等工作。 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)暫
43、停狀態(tài)暫停狀態(tài)是指當(dāng)活動(dòng)暫時(shí)暗下來,退到背景畫面的狀態(tài)。當(dāng)警告對(duì)話框或電話來了時(shí),都會(huì)讓原來運(yùn)行的活動(dòng)退到背景畫面。新出現(xiàn)的警告對(duì)話框等界面元件蓋住了原來的活動(dòng)畫面?;顒?dòng)處在暫停狀態(tài)時(shí),用戶無法與原活動(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)。通過按返回鍵,可以調(diào)出所有處于停止?fàn)顟B(tài)的應(yīng)用程序列表。處于停止?fàn)顟B(tài)的活動(dòng),還可以通過通知來喚醒。(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)存不足
44、時(shí)的回收規(guī)則,將處于停止?fàn)顟B(tài)的活動(dòng)所占用的內(nèi)存回收。Adroid活動(dòng)聲明周期如圖3-2:圖3-2 Android活動(dòng)生命周期圖3-2所示的七個(gè)狀態(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í),原來的活動(dòng)會(huì)進(jìn)入暫
45、停狀態(tài),暫時(shí)放棄屏幕的控制權(quán),被中斷到背景去,將前景交給優(yōu)先級(jí)高的事件。當(dāng)這些優(yōu)先級(jí)高的事件處理完后,活動(dòng)就改進(jìn)入繼續(xù)狀態(tài),此時(shí)又取得屏幕的控制權(quán)。 2、活動(dòng)的運(yùn)作流程由實(shí)際運(yùn)行來看,我們可以歸納出所有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)
46、一>onstart(2)一>0nResume(2)一>onStop(l)。該流程首先凍結(jié)原來的活動(dòng),再交出屏幕控制權(quán);直到活動(dòng)2完成一般啟動(dòng)流程后,活動(dòng)1才會(huì)被停止。(3)回到原來活動(dòng)回到原來活動(dòng)的基本流程為onPause(2)一>onRestart(1)一>onstart(l)一>onResume(1)一>onstop(2)一>onDestroy(2)。另外按返回鍵也可以回到原來的活動(dòng)。(4)退出結(jié)束退出結(jié)束的基本流程為onPause一>onStop一>onDestroy。如果程序中有直接調(diào)用finish方法來關(guān)閉活動(dòng)的話,系統(tǒng)會(huì)跳
47、過先凍結(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)執(zhí)行過多個(gè)應(yīng)用程序,只要按下返回鍵,就會(huì)開啟最近一次開啟過的活動(dòng)。所以如果要讓再次被創(chuàng)建的活動(dòng)跟原來開啟過的一樣,那么在活動(dòng)之間切換時(shí),就要保存資料:即在每次活動(dòng)運(yùn)行到暫?;蛲V?fàn)顟B(tài)時(shí)先保存資料,然后在創(chuàng)建時(shí)將資料讀出來。四、系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)(一)游戲的策劃游戲的策劃主要包括游戲的情節(jié)、目標(biāo)受眾、運(yùn)行的目標(biāo)平臺(tái)、采用的呈現(xiàn)技術(shù)、操作方式等幾個(gè)方面。下面就針對(duì)本游戲?qū)ι鲜鰩讉€(gè)方面進(jìn)行簡單的介紹,如下所列。游戲情節(jié),本游戲?yàn)檩p量級(jí)的益智游戲,因此不存在很復(fù)雜的
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電熱馬甲商業(yè)機(jī)會(huì)挖掘與戰(zhàn)略布局策略研究報(bào)告
- 定制眼鏡鏡片行業(yè)營銷策略方案
- 云環(huán)境監(jiān)測服務(wù)行業(yè)相關(guān)項(xiàng)目經(jīng)營管理報(bào)告
- 心理咨詢行業(yè)市場調(diào)研分析報(bào)告
- 緩解昆蟲叮咬癥狀的藥物制劑市場分析及投資價(jià)值研究報(bào)告
- 失禁用護(hù)墊產(chǎn)品供應(yīng)鏈分析
- 關(guān)于退休的金融咨詢行業(yè)經(jīng)營分析報(bào)告
- 可折疊自行車產(chǎn)品供應(yīng)鏈分析
- 廣告位租賃合同范本
- 建造波浪能發(fā)電廠行業(yè)經(jīng)營分析報(bào)告
- ICC色彩管理技術(shù)原理解析
- 燃?xì)夤艿?流量-流速-口徑計(jì)算公式
- 華電架空輸電線路大作業(yè)
- 暗挖工程冬季施工措施
- 往生薦亡功德文疏
- 2021年春新教科版四年級(jí)下冊(cè)科學(xué) 2.3《簡易電路》教案含教學(xué)反思
- 相干反斯托克斯拉曼光譜cars-姚波善
- GB∕T 13331-2014 土方機(jī)械 液壓挖掘機(jī) 起重量
- (畢業(yè)論文)烷基化裝置危險(xiǎn)性分析
- 赫爾曼的敘事學(xué)理論
- 醫(yī)學(xué)德語詞匯大全
評(píng)論
0/150
提交評(píng)論