基于Android平臺的手機軟件開發(fā)_基于Android平臺的手機“星座”查詢軟件設計_第1頁
基于Android平臺的手機軟件開發(fā)_基于Android平臺的手機“星座”查詢軟件設計_第2頁
基于Android平臺的手機軟件開發(fā)_基于Android平臺的手機“星座”查詢軟件設計_第3頁
基于Android平臺的手機軟件開發(fā)_基于Android平臺的手機“星座”查詢軟件設計_第4頁
基于Android平臺的手機軟件開發(fā)_基于Android平臺的手機“星座”查詢軟件設計_第5頁
已閱讀5頁,還剩33頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、安徽建筑工業(yè)學院 畢 業(yè) 設 計 (論文)課題名稱: 基于Android平臺的手機軟件開發(fā) 基于Android平臺的手機“星座”查詢軟件設計基于Android平臺的手機軟件開發(fā) -基于Android平臺的手機“星座”查詢軟件設計 電子與信息工程學院 電子信息工程 07城建電子2班 梁志成指導老師:孫富康摘要隨著智能手機一步步走進普通人的生活,它將成為人們獲取信息的主要設備。因此,手機的娛樂應用服務將會有很大的發(fā)展空間,手機星座查詢軟件就是其中的一項。Android平臺提供給用戶非常方便的星座查詢功能,這將為星座查詢服務的設計與實現提供了更好的平臺。另外,Android平臺基本上是免費的,所以能

2、夠有效降低軟件的成本,最終讓每個用戶能夠自由地獲取信息,也為手機星座查詢服務的普及做出貢獻。本文對目前應用的Symbian、WindowsMobile、MacOSX和RIM等平臺的現狀進行了分析與比較。進而研究分析了Android平臺的系統(tǒng)架構和組件模型,接著解析了Android中的重要API和應用構成,以Intent和生命周期的機制。在此基礎上,基于Android平臺設計和開發(fā)手機星座查詢軟件。本系統(tǒng)界面友好、操作便捷,具有良好的可擴展性和可維護性;系統(tǒng)經過測試,可以穩(wěn)定運行,能夠滿足手機用戶的基本需求。關鍵詞:Android;Java;星座查詢;Intent;布局 AbstractWith

3、 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 great development space,Constellation inquires is one of them. Android platform offers users very convenient constellation inquires the function,This will be f

4、or constellation inquires the design and implementation of service provides a better platform.In addition, Android platform is basically free, so can effectively reduce the software costs, Finally let each user will be free to get information, Also for the popularization of mobile phone constellatio

5、n inquires the service contribution.This paper discusses the present application of Symbian, Windows Mobile, MacOSX and RIM situation of such platform are analysed and compared. Further research and analysis of the Android platform system architecture and the component model, then analyzes the impor

6、tant Android API and the application 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;

7、after test of system, can stable operation, To meet the basic needs of mobile phone users.Keywords: Android;Java;Constellation query; Intent; Layout目錄1、緒論11.1課題背景11.2 Android平臺與其他平臺的比較11.3本文主要工作21.4論文組織結構22、Android的架構分析32.1 Android的功能特征32.2 Android架構分析5應用程序框架5類庫6運行時組件72.3 Android應用的構成和工作機制73、Android

8、應用程序結構剖析83.1 Android的API83.2 Android應用程序結構解析9活動9意圖接收器10服務11內容提供者113.3 Intent的詳細解析11 Intent的抽象描述11 Android如何解析Intent123.4 Android活動的生命周期13活動的生命狀態(tài)14活動的運作流程154、手機“星座”查詢軟件設計實現174.1 系統(tǒng)設計需求17需求分析17下載開發(fā)資源17更新Ec1ipse并下載ADT(Android開發(fā)插件)18使用Ec1ipse開發(fā)Android應用194.2“星座”查詢軟件程序中各類組件20 Package Explorer中的組件20應用程序的資

9、源21布局文件main.xml21 AndroidManifest.xml214.3手機“星座”查詢軟件設計實現22系統(tǒng)主界面的實現22“星座”查詢功能實現24常見的錯誤分析解決295、結語295.1總結295.2展望306、參考文獻307、謝辭311、緒論1.1課題背景隨著移動通信的發(fā)展以及互聯(lián)網向移動終端的普及,網絡和用戶對移動終端的要求越來越高,而Symbian,windows Mobile,Palm OS等手機平臺過于封閉,不能很好的滿足用戶的需求,因此市場迫切需要一個開放性很強的平臺。Android是一套真正意義上的開放性移動設備綜合平臺,它包括操作系統(tǒng)、中間件和一些關鍵的平臺應用。

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

11、2007年11月推出了一個專為移動設備設計的軟件平臺Android。Android最大特點在于它是一個開放的體系架構,具有非常好的開發(fā)和調試環(huán)境,而且還支持各種可擴展的用戶體驗, Android里面具有非常豐富的圖形系統(tǒng), 對多媒體的支持功能和非常強大的瀏覽器。本課題的目的在于掌握Java手機應用開發(fā)技術和移動軟件平臺開發(fā)技術。在以Java語言為基礎,結合Android移動開發(fā)平臺,并利用Android提供的SDK,完成在Android平臺上運行的“星座”查詢軟件,形成一款具有一定功能的手機應用軟件。本課題的意義在于通過開發(fā)一款“星座”查詢手機應用軟件,可以熟練應用Android平臺提供的應用

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

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

14、速修正,新的應用、新的創(chuàng)意可以不斷出現。Android平臺的另外一個優(yōu)勢是標準化和跨平臺。Android和操作系統(tǒng)進行了緊密的整合,從而可以方便地使用操作系統(tǒng)的功能。這與難于使用操作系統(tǒng)功能的J2ME相比,無疑對開發(fā)者有很大的吸引力。并且從圖形應用界面的開發(fā)上面來看,Android可以使用配置文件來描述圖形控件的布局,用Java代碼編寫實際響應代碼,這樣方便得多。當然由于Android己經提供了大量現成的應用API和應用工具,使得常規(guī)智能手機功能的開發(fā)變得非常容易和簡單。1.3本文主要工作Android是基于Linux+Java的手機操作系統(tǒng)平臺,XMPP是基于XML的開源的即時通訊協(xié)議,本文

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

16、id的架構,運行組件以及Android應用的構成和工作機制。第三章,提出了在Android平臺上開發(fā)基于java的“星座”查詢軟件,提出了系統(tǒng)的架構、系統(tǒng)服務器端和客戶端的解決方案,對系統(tǒng)采用的Intent進行解析,并且介紹了Android的生命周期。第四章,對如何實現“星座”查詢軟件功能進行了詳細的分析,對軟件設計從客戶端界面,代碼段的實現,XML解析模塊,“星座”查詢界面跳轉和客戶端擴展功能幾個方面進行了詳細的學士學位論文實現,最后對系統(tǒng)的流程進行了描述。第五章,總結了本文的主要研究內容和研究成果,分析了存在的問題,并對今后的發(fā)展方向進行了展望。2、Android的架構分析Android是

17、一個包含操作系統(tǒng)、中介架構層及應用程序所產生出來的軟件堆棧架構。由下而上,其核心為嵌入式Linux2.6作業(yè)系統(tǒng),向上搭配Google為Android開發(fā)的類庫及Android運行時,再配合應用程序架構,來開發(fā)各種不同的應用程序。2.1Android的功能特征(l)應用程序架構:在應用程序架構內已經具備多種不同的基礎組件,在開發(fā)應用程序時,就可以直接調用這些組件來使用,可以節(jié)省開發(fā)應用程序的心力及時間。(2)Dalvik虛擬機器:在Android平臺上所使用Java虛擬機,不是Sim公司的標準Java虛擬機,而是使用Google自主開發(fā)的代號為Dalvik的虛擬機,它在保證API方面的兼容的同

18、時,針對移動手機進行了大幅優(yōu)化,占用資源更小,運行效率更高。(3)集成的瀏覽器:集成的瀏覽器是Android內建的瀏覽器,是以WebKit的瀏覽引擎為基礎所開發(fā)成的。WedKit是一個開源瀏覽器網頁排版引擎,目前使用WebKit引擎的瀏覽器主要有:Safari,Midori,Epiphany等。配合Android手機的功能,可以在瀏覽網頁時,達到更好的效果,例如:局部性的縮放網頁上的資訊、觸控式的操作等效果。(4)優(yōu)化的繪圖能力:在程序里可以用到的繪圖功能分為2D與3D兩個方面。在2D方面,Android提供了一套特有的類庫(SGL;而在3D方面則是使用OpenGLES1.0(openGL f

19、or Embedded systems)規(guī)范的類庫。它們是一種非??斓膱D形引擎,并且支持硬件加速。(5)SQLite數據庫:SQLite提供結構化的數據存取。SQLite是一款輕型的數據庫,它的設計目標是嵌入式的,目前已經在很多嵌入式產品中使用了它,它占用的資源非常低。它能夠支持Windows/Linux/U nix等主流的操作系統(tǒng),同時能夠跟很多程序語言相結合,比如php,Java等,還有ODBC接口,同樣比起Mysql,PostgreSQL來講,它的處理速度比它們都快。它無需安裝和管理配置,它是一個儲存在單一磁盤文件中的完整數據庫,體積小只有250KB但支持數據庫大小至2TB。它雖然很小巧

20、,但是支持的SQL語句毫不遜色于其它開源數據庫。同時它還支持事務功能和并發(fā)處理等等。SQLite也是一套開放性的關聯(lián)式資料庫,其特點在于輕量性方面的設計結構,更適合在手機上使用。(6)多媒體的支持能力:主要用于播放媒體文件。這同時包括對音頻(如播放MP3或其他音樂文件等)和視頻(如播放從網上下載的視頻)的支持,并支持“播放URI地址”(Note:URI即是統(tǒng)一資源識別地址)模式在網絡上直接播放的流媒體。另外支持各種通用的靜態(tài)圖像格式,例如:JPG、PNG、GIF等格式。(7)GSM技術:Global System for Mobile Communications,即全球移動通訊系統(tǒng),俗稱”全

21、球通”,是一種起源于歐洲的移動通信技術標準,是第二代移動通信技術,其開發(fā)目的是讓全球各地可以共同使用一個移動 網絡標準,讓用戶使用一部手機就能行遍全球。GSM技術是屬于手機硬件方面的展現,也是在開發(fā)Android應用程序時可以突出的特點之一。(8)藍牙、EDGE、3G及Wi-Fi:藍牙是一種新型、開放、低成本、短距離的無線連接技術,可取代短距離的電纜,實現話音和數據的無線傳輸。EDGE(Enhanced Data Rate for GSM,Evolution),即增強型數據速率GSM演進技術。EDGE是一種從GSM到3G的過渡技術,它主要是在GSM系統(tǒng)中采用了一種新的調制方法,即最先進的多時隙

22、操作和SPSK調制技術。由于8PSK可將現有GSM網絡采用的GMSK調制技術的信號空間從2擴展到8,從而使每個符號所包含的信息是原來的4倍。Wi-Fi(WirelessFidelity),即無線保真技術,與藍牙技術一樣,同屬于在辦公室和家庭中使用的短距離無線技術。該技術使用的是2.4GHz附近的頻段,該頻段目前尚屬沒用許可的無線頻段。其目前可使用的標準有兩個,分別是IEEE802.lla和IEEE802.11b。這些通訊能力也是屬于手機硬件方面的展現,也是在開發(fā)Android應用程序時可以突出的特點之一。(9)GPS: Global Positioning System,即全球定位系統(tǒng),它是一

23、個由覆蓋全球的24顆衛(wèi)星組成的衛(wèi)星系統(tǒng)。這個系統(tǒng)可以保證在任意時刻和任何地點都可以同時觀測到4顆衛(wèi)星,以保證衛(wèi)星可以采集到該觀測點的經緯度和高度,以便實現導航、定位、授時等功能。這項技術可以用來引導飛機、船舶、車輛以及個人。這個同樣也是屬于手機硬體方面的體現,也是在開發(fā)Android應用程序是可以突出的特點之一。2.2 Android架構分析圖中顯示的是Android架構的五個主要部分。應用程序框架在Android SDK中,定義了讓開發(fā)者使用與核心應用程序相同API的權限應用程序框架是為了要簡化組件的重新利用而設計的,應用程序可以發(fā)布功能為其它應用程序所使用。但是,這要受限于應用程序架構的安

24、全機制,使用者以用同樣的機制來新增、置換組件。目前所有的應用程序是由服務及系統(tǒng)來組成,包含有:(l)一套強大和可擴展的視圖系統(tǒng):用來建構一個應用程序的基本組件,包了在開發(fā)系統(tǒng)畫面時,常用的列表、網格、文本框、按鈕等控制項,甚至是內嵌的Web瀏覽器。 圖2-1 Android架構的五個部分(2)內容提供者:使應用程序可以訪問另一個應用程序的數據(如聯(lián)系人數庫),或者共享它們自己的數據。(3)資源管理器:提供各種非程序代碼的資源讓應用程序去使用。例如:本字符串、圖形文件或排版相關的布局文件。(4)通知管理器:提供應用程序在狀態(tài)欄中顯示應用程序自定義的提示信息。(5)活動管理器:管理所有應用程序的生

25、命周期及提供常用的導航回退功能。例如:啟動應用程序要用到的資源準備及關閉應用程序時釋放內存及相關資源等工作。(6)視窗管理器:用來管理所有啟動程序的視窗。(7)位置管理器:用來管理地圖服務的相關功能。(8) 管理器:用來管理用戶撥打與接聽 的相關功能。(9)包管理器:管理所有安裝在Android系統(tǒng)內的包。類庫在Android中包含一些C/C+的類庫,這些類庫能被Android系統(tǒng)中不同的組件來使用。開發(fā)者可以通過應用程序框架使用這些功能。部分核心類庫列表如下:(1)surface Manager:主要的功能是讓開發(fā)者可以去存取/顯示系統(tǒng)及管理的功能,在顯示與存取操作間的對應、互動以及實現無接

26、縫的2D/3D多應用程序之間的整合。例如:在2D、2D顯示上的合成、疊合動作。(2)3Dlibraries:主要是依openGLES1.0規(guī)范所定義的3D繪圖引擎。該庫使用硬件加速(當硬件可用時),可以將硬件的3D功能做最佳化的處理顯示。(3)SGL:主要是處理有關顯示2D方面的繪圖引擎。(4)Media Frame work:主要是以packetVideo公司的OpenCORE為基礎所發(fā)展的多媒體類庫,該庫支持回放和錄制大量流行的音視頻格式和靜態(tài)圖片。例如:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG、GIF等格式(5)Free Type:主要是用來顯示點陣圖和處理向量字形

27、的。(6)SSL:(secureSocketsuyer),中文名為“安全套接層協(xié)議層”,它是網景公司提出的基于WEB應用的安全協(xié)議,當前版本為3.0。SSL協(xié)議指定了一種在應用程序協(xié)議(如 、Telenet、NMTP和FTP等)和TCP/IP協(xié)議之間提供數據安全性分層的機制,它為TCP/IP連接提供數據加密、服務器認證、消息完整性以及可選的客戶機認證。它已被廣泛地用于Web瀏覽器與服務器之間的身份認證和加密數據傳輸。SSL協(xié)議位于TCP膽協(xié)議與各種應用層協(xié)議之間,為數據通訊提供安全支持。SSL協(xié)議可分為兩層:SSL記錄協(xié)議(SSL Record Proto col):它建立在可靠的傳輸協(xié)議(如

28、TCP)之上,為高層協(xié)議提供數據封裝、壓縮、加密等基本功能的支持。SSL握手協(xié)議(SSL Hand shake proto col):它建立在SSL記錄協(xié)議之上,用于在實際的數據傳輸開始前,通訊雙方進行身份認證、協(xié)商加密算法、交換加密密鑰等。SSL協(xié)議提供的服務主要有:認證用戶和服務器,確保數據發(fā)送到正確的客戶機和服務器;加密數據以防止數據中途被竊取;維護數據的完整性,確保數據在傳輸過程中不被改變。(7)SQLite:SQLite是一套開放性的關聯(lián)式資料庫,能夠被所有應用程序使用的輕量級的關系數據庫引擎。(8)web Kit:是一個先進的網頁瀏覽器引擎,被用來構建Android瀏覽器和內嵌的w

29、eb視圖,也可以讓開發(fā)者利用這個引擎來做不同的應用。(9)lib c:就是一個BSD標準C類庫。但是,針對Linux嵌入式裝置進行過最佳化的調整。 Android運行時組件雖然Android是用Java語言來開發(fā)、撰寫應用程序,但卻不使用Java運行時組件來執(zhí)行Java程序,而是使用了由Google自行研發(fā)的Android運行時組件來執(zhí)行程序。Android運行時組件包括兩個重要的部分,一個是核心類庫,另一個是Dalvik虛擬機。2.3Android應用的構成和工作機制對于一個Android應用程序來說,是由Activity、IntentReceiver、Service、Content Pro

30、vider四部分組成,但并不是每一個Android應用程序都必須由這四部分組成。在應用程序中使用時,需要在配置文件AndroidManifest.xml中進行配置。這個配置文件是每個Android應用程序所必需的,用于定義應用程序的組件、組件的功能以及必要條件等。Android應用的構成和工作流程如圖2-2: 圖2-2 Android的構成和工作流程3、Android應用程序結構剖析3.1 Android的APIAndroid API主要包含了以下幾個部分:(1)AndroidManifest.xmlAndroidManifest.xml是系統(tǒng)的控制文件,它告訴系統(tǒng)如何處理所創(chuàng)建的所有應用組件

31、(尤其是活動(Activity),服務(Service),意圖接收器(Intent Receiver)和內容提供者(Content Provider)。舉例來說,控制文件就是把活動和要接收的意圖(Intents)連接在一起的“膠水”。(2)活動活動就是一個有生命周期的對象。一個活動就是完成某些工作的代碼塊,這部分工作還可能包括對用戶UI界面的顯示。不過這不是必須的,有些活動從不顯示UI界面。(3)視圖視圖可以將其自身繪制到屏幕上。Android的用戶界面由一系列的視圖樹構成。接口都是由一組以樹的形式出現的視圖組成的。開發(fā)者可以通過創(chuàng)建一個新的視圖的方法來使用自定義的圖形處理技術(比如開發(fā)游戲,

32、或者是使用了不常用的用戶圖形窗口界面)。(4)意圖意圖是一個簡單的消息對象,它表示程序想做某事的“意圖”。比如應用程序想要顯示一個網頁,那么它可以通過創(chuàng)建一個Intent實例并將其傳遞給系統(tǒng)來表示意圖瀏覽這個URI。系統(tǒng)將定位到能處理這一Intent的代碼(在當前情況下就是瀏覽器),并運行之。意圖也可以用于廣播系統(tǒng)范圍內的有效事件(例如通知事件)。(5)服務服務是運行在后臺的一段代碼。它可以運行在它自己的進程,也可以運行在其他應用程序的進程里,這取決于自身的需要.。其它的組件可以綁定到一個服務上來,通過遠程過程調用(RPC)來調用這個方法。例如媒體播放器的服務,當用戶退出媒體選擇的界面時,仍然

33、希望音樂依然可以繼續(xù)播放,這時就可用服務來保證當用戶界面關閉時音樂還繼續(xù)播放著。 (6)通知通知將以小圖標的形式呈現在狀態(tài)欄里,用戶通過與圖標的交互來接收消息。最常見的通知包括短信息、通話記錄和語音郵件,但是應用程序也可以創(chuàng)建它們自己的通知事件。(7)內容提供者內容提供者是用來提供對設備上數據進行訪問。典型的例子就是使用內容提供者來訪問聯(lián)系人列表。應用程序也可以使用其它程序通過內容提供者提供的數據,同時也可以定義自己的內容提供者來向其它應用提供數據訪問服務。3.2Android應用程序結構解析通常由以下四個組件來構建一個完整的Android應用程序?;顒右鈭D接收器服務內容提供者然而,并不是所有

34、的Android應用程序都必須具備上面的四個組件,可以由上面的一個或幾個來組建。當決定使用以上哪些組件來構建Android應用程序時,需要將它們注冊在AndroidManifest.xml文件中,這是一個XML配置文件,在這個文件中可以聲明應用程序組件以及它們的特性和要求。這個配置文件是每個Android應用程序所必需的?;顒踊顒邮且陨纤膫€組件中最常用的一個。每個活動都是Activity的子類,并實現了一些獨有的功能,如管理UI顯示和UI的反饋事件。一個活動就相當于應用程序的一個用戶界面,由事件響應以及視圖等組成。大多數的應用程序通常包括多個界面。例如:一個文本聊天應用程序,至少應該包含一個聯(lián)

35、系人列表界面、一個聊天界面、一個設置界面、一個聊天記錄查詢界面等等。每個界面其實都可看作是一個活動。顯示一個新界面就相當于生成一個對應的活動對象。在一些情況下,活動能夠返回給它的上級界面一個返回值,例如一個提供給用戶選擇照片的活動可以返回給它的調用者用戶選擇了哪個照片文件。當一個新的活動出現時,前一個活動被中斷并被放入到一個歷史堆棧中。用戶可以使用返回鍵使前一個活動重現。當一個活動不再需要時,可以將它們從歷史堆棧中移除。默認情況下,Android會為每個應用程序保留從主界面開始的歷史堆棧。Android通過一個被稱作意圖的特殊類,來實現界面與界面之間的跳轉。一個意圖描述了一個應用程序想要做什么

36、。在意圖的描述結構中,含有兩個重要的數據結構:動作和動作對應的數據。典型的動作類型包括MAIN、VIEW、PICK、EDIT等等,而動作對應的數據則以URI的形式表示。例如:顯示一個聯(lián)系人信息的界面,可以創(chuàng)建一個意圖,并將它的動作設置成VIEW,數據設置成表示這個人信息的URI。除此之外,還有一個被稱作意圖過濾器(IntentFiher)的相關類。當發(fā)生一個有效的目的請求時,意圖過濾器用來描述一個活動能夠處理什么意圖。如上例中所描述,想要正常顯示一個聯(lián)系人信息的界面,必須聲明一個意圖過濾器,它說明當有聯(lián)系人數據要被在界面上顯示時,知道如何處理它們。通常意圖過濾器要被注冊在AndroidMani

37、fest.xml文件中。從一個界面跳轉到另一個界面是由解析各種意圖實現的。例如:一個活動使用startActivity(myIntent)來調用其他活動時,系統(tǒng)會查找所有已經安裝的應用程序的意圖過濾器,并從中挑選出能夠匹配myIntent意圖的活動。隨后,這個新的活動接收到意圖(myIntent)的通知并開始運行。當startActivity方法被調用,解析意圖的處理過程隨之發(fā)生,這個機制有以下兩個突出的優(yōu)點:活動可以通過一個以意圖形式產生的請求來重用其他組件的功能?;顒涌梢栽谌魏螘r候被一個具有等價意圖過濾器的新活動所替代。意圖接收器當想要編寫代碼來對外部事件做一些處理時,可以使用意圖接收器。

38、意圖接收器并不顯示UI界面,它是通過NotificationManager來通知用戶他們感興趣的事件發(fā)生了。意圖接收器同樣可以被注冊在AndroidManifest.xml文件中,同時也可以在代碼中使用Context.registerReceiver()來注冊自己的意圖接收器。當一個意圖接收器被觸發(fā)時,系統(tǒng)會根據需要來啟動應用程序。服務服務是具有長生命周期并且沒有用戶界面的代碼。內容提供者在Android中,每個應用程序都是有自己的userID及在自己的進程中執(zhí)行。這樣做的好處是,可以保護系統(tǒng)及應用程序,避免被其他不正常的應用程序所影響??梢园衙總€進程想像成是一個黑盒子,彼此不會互相影響,連內

39、存的資料都無法共享。如果應用程序之間想要共享數據,就需要使用用內容提供者。一個內容提供者就是一個類,它實現了一個標準的方法集合。其他的應用程序可以使用這些方法來保存和檢索此內容提供者處理過的數據。3.3 Intent的詳細解析在一個Android應用中,主要是由四種組件組成的,這四種組件可參考上一節(jié)的內容。而這四種組件是獨立的,它們之間可以互相調用,協(xié)調工作,最終組成一個真正的Android應用。在這些組件之間的通訊中,主要是由意圖協(xié)助完成的。意圖負責對應用中一次操作的動作、動作對應的數據、附加數據進行描述,Android則根據此意圖的描述,負責找到相應的組件,將意圖傳遞給它,并完成組件的調用

40、。因此,意圖在這里起著一個媒體中介的作用,專門提供組件之間互相調用的相關信息,實現調用者與被調用者之間的解耦。例如,在一個聯(lián)系人維護的應用中,當在一個聯(lián)系人列表屏幕(假設對應的Activity為listActivity)上,點擊某個聯(lián)系人后,希望能夠調出此聯(lián)系人的詳細信息,為了實現這個目的,listActivity需要構造一個Intent,這個Intent用于告訴系統(tǒng),要做“查看”動作,此動作對應的查看對象是“某聯(lián)系人”,然后調用startActivity(intent intent),將構造的Intent傳入,系統(tǒng)會根據此intent中的描述,到AndroidManifest.xml中找到滿

41、足此Intent要求的Activity。系統(tǒng)會調用找到的Activity,即為detailActivity,最終傳入Intent,detailActivitv則會根據此Intent中的描述,執(zhí)行相應的操作。Intent的抽象描述在Android參考文檔中,對意圖的定義是執(zhí)行某操作的一個抽象描述。該抽象描述的具體內容如下:首先,它是要執(zhí)行的動作的一個簡要描述,如查看、修改等,Android定義了一套標準動作。此外,還可以根據應用的需要,定義自己的動作,并可定義相應的活動來處理自定義的動作。其次,是執(zhí)行動作要操作的數據,Android采用指向數據的一個URI方式來實現。另外,除了動作和數據這兩個重

42、要屬性外,還有一些附加屬性:類別:被執(zhí)行動作的附加信息。例如LAUNCHER_CATEGORY表示意圖的接受者應該在Launcher中作為頂級應用出現;而ALTERNATIVECATEGORY表示當前的意圖是一系列的可選動作中的一個,這些動作可以在同一個數據上執(zhí)行。數據類型:顯式指定意圖的數據類型。一般意圖的數據類型能夠根據數據本身進行判定,但是通過設置這個屬性,可以強制采用指定的類型。組件:指定意圖的目標組件的類名稱。通常Android會根據意圖中包含的其它屬性的信息,比如動作、數據/數據類型、類別進行查找,最終找到一個與之匹配的目標組件。但是,如果組件這個屬性有指定的話,將直接使用它指定的

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

44、可以以兩種形式來使用Intent:(l)直接意圖:指定了組件屬性的意圖。通過指定具體的組件類,通知應用啟動對應的組件。(2)間接意圖:沒有指定組件屬性的意圖。這些意圖需要包含足夠的信息,這樣系統(tǒng)才能根據這些信息,在所有的可用組件中,確定滿足此意圖的組件。對于直接意圖,Android不需要去做解析,因為目標組件已經很明確,Android需要解析的是那些間接意圖,通過解析,將意圖映射給可以處理此意圖的活動、意圖接收器或服務。意圖解析機制主要是通過查找己注冊在AndroidManifest.xml中的所有意圖過濾器及其中定義的意圖,最終找到匹配的意圖。在這個解析過程中,Android是通過意圖的動作

45、、數據類型、類別這三個屬性來進行判斷的,判斷方法如下:如果意圖指明定了動作,則目標組件的意圖過濾器的動作列表中就必須包含有這個動作,否則不能匹配。如果意圖沒有提供數據類型,系統(tǒng)將從數據中得到數據類型。和動作一樣,目標組件的數據類型列表中必須包含意圖的數據類型,否則不能匹配。如果意圖中的數據不是content:類型的URI,而且意圖也沒有明確指定它的數據類型,將根據意圖中數據的格式(比如 :或者mailto:)進行匹配。同上,意圖的格式必須出現在目標組件的格式列表中。如果意圖指定了一個或多個類別,這些類別必須全部出現在組建的類別列表中。比如意圖中包含了兩個類別:LAUNCHER_CATEGORY

46、和ALTERNATIVEC_CATEGORY,解析得到的目標組件必須至少包含這兩個類別。3.4Android活動的生命周期Android平臺是個手機作業(yè)系統(tǒng)。撇掉其他功能不談,手機的特性,就是應該能隨時在未完成目前動作的時候,暫停正在使用的功能,切換到接 、接收短信模式,而且在接完 回到應用程序時,還希望能看到一樣的內容。現在用戶使用智能手機,大多已習慣使用多工的作業(yè)系統(tǒng)(如windowsMobile),可以在用手機聽音樂的同時,執(zhí)行其他多個程序。同時執(zhí)行多個程序有它的明顯好處,但也有它的缺點。每多執(zhí)行一個應用程序,就會多耗費一些系統(tǒng)內存,而手機里的內存是相當有限的。當同時執(zhí)行的程序過多,或是

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

48、從一個活動切換到另一個活動的時候,原來的活動將經過一連串的狀態(tài)改變。開發(fā)者可以在程序中添加一些各狀態(tài)相對應的流程,每次活動狀態(tài)改變時,就會執(zhí)行相對應的流程。要讓用戶有好的使用體驗,活動需要在各個周期中負責保管狀態(tài)、恢復狀態(tài)、傳送資料等工作?;顒拥纳鼱顟B(tài)Android的虛擬機是使用堆棧管理。主要有四種狀態(tài):(l)活動狀態(tài)活動狀態(tài)是指用戶啟動應用程序或活動后,活動運行中的狀態(tài)。在Android平臺上,同一個時刻只會有一個活動處于活動或運行狀態(tài)。其他的活動都處于未啟動、停止或是暫停的狀態(tài)。(2)暫停狀態(tài)暫停狀態(tài)是指當活動暫時暗下來,退到背景畫面的狀態(tài)。當警告對話框或 來了時,都會讓原來運行的活動退

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

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

51、制權?;顒拥倪\作流程由實際運行來看,我們可以歸納出所有Android應用程序都遵循的運作流程:(l)一般啟動啟動一個活動的基本流程為onCreate一onstart一onResume。該流程首先分配資源給這個活動(創(chuàng)建狀態(tài)),然后將活動的內容顯示到屏幕上(啟動狀態(tài));在一切就緒后,取得屏幕的控制權(恢復狀態(tài)),用戶可以開始使用這個程序。(2)調用另一個活動調用另一個活動的基本流程為onpause(l)一onCreate(2)一onstart(2)一0nResume(2)一onStop(l)。該流程首先凍結原來的活動,再交出屏幕控制權;直到活動2完成一般啟動流程后,活動1才會被停止。(3)回到原

52、來活動回到原來活動的基本流程為onPause(2)一onRestart(1)一onstart(l)一onResume(1)一onstop(2)一onDestroy(2)。另外按返回鍵也可以回到原來的活動。(4)退出結束退出結束的基本流程為onPause一onStop一onDestroy。如果程序中有直接調用finish方法來關閉活動的話,系統(tǒng)會跳過先凍結的階段,直接暫停,停止,然后銷毀。(5)回收后再啟動回收后再啟動的基本流程為oncreate一onstart一onresume。如果被回收掉的活動一旦又重新被調用時,會像一般啟動一樣再次調用活動的onCreate方法。當在模擬器上已經執(zhí)行過多個

53、應用程序,只要按下返回鍵,就會開啟最近一次開啟過的活動。這時要是按下多次返回鍵,理論上遲早會返回到某個已經銷毀的活動。如果應該開啟的活動己經被回收了,那么這個活動會再次被創(chuàng)建。再次被創(chuàng)建的活動,跟原來開啟過的活動是不一樣的。所以如果要讓再次被創(chuàng)建的活動跟原來開啟過的一樣,那么在活動之間切換時,就要保存資料:即在每次活動運行到暫停或停止狀態(tài)時先保存資料,然后在創(chuàng)建時將資料讀出來。4、手機“星座”查詢軟件設計實現4.1 系統(tǒng)設計需求需求分析設計需要結合使用幾種技術。Eclipse平臺:Eclipse 是一個運行插件的平臺。可以下載安裝 Eclipse Classic 的最新版本。Android D

54、eveloper Tools:按照安裝說明安裝 Android Developer Tools(Eclipse 插件)。源代碼:本設計中的源代碼片段包括:AndroidManifest.xml(片段) 這個文件是 Android 應用程序的應用程序部署描述符。IntentReceiver 演示IntentReceiver的實現,這個類處理 AndroidManifest.xml 文件中IntentFilter標記所公布的 intent。Main.xml 這個文件包含 Android 活動所用的視覺元素或資源。R.java 這個文件是由 Android Developer Tools 自動生成的,它把視覺資源 “連接” 到 Java 源代碼。AndroidManifest.xml(完整) 這是完整的 AndroidManifest.xml 文件,包含每個重要元素的描述。4.1.2下載開發(fā)資源(l)首先打開網址 :/nload.html來下載最新的AndroidSDK。國內基本是用Windows系統(tǒng),所以就選擇Windows版本的SDK。下載后直接解壓縮就可以使用,為了在控制臺中直接使

溫馨提示

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

評論

0/150

提交評論