【正文】
application.../Activityandroid:name=””android:”string/main_title”android:”drawable/icon” /application/Activit.../application/manifest,所以encoding顯示是utf8,;. 該系統(tǒng)支持的版本和編碼定義了我們需要使用的架構(gòu),該架構(gòu)來(lái)自xml,它是一個(gè)命名空間,它就像一條河的源頭一樣能讓我們找到系統(tǒng)架構(gòu),每一個(gè)配置文件必須有這個(gè)xml,否則程序中的所使用的所有資源將無(wú)法找到。一個(gè)activitiy必須要有一個(gè)Activity標(biāo)志對(duì)應(yīng),無(wú)論它是供應(yīng)外部使用還是只用于自己的package中。而且,該文件可以包含可用于測(cè)試該應(yīng)用程序或其他應(yīng)用程序的工具細(xì)節(jié)。Intent接收者。,它位于Android工程的根目錄,描述了package中的全局?jǐn)?shù)據(jù),包括package中的組件,各自的實(shí)現(xiàn)類(lèi),各種能被處理的類(lèi)和啟動(dòng)位置等。通過(guò)這個(gè)配置文件找到相應(yīng)的組件進(jìn)行實(shí)例化。 AndroidManifest文件在啟動(dòng)一個(gè)Android應(yīng)用程序組件之前,必須確定相應(yīng)組件是存在的。5 Android工作日志記錄器程序設(shè)計(jì)實(shí)現(xiàn) 本章介紹了本文的工作日志記錄器設(shè)計(jì)的實(shí)現(xiàn),、項(xiàng)目創(chuàng)建及結(jié)構(gòu)分析,最后實(shí)現(xiàn)工作日志記錄器的功能得到所需要的設(shè)計(jì)結(jié)果。再次被創(chuàng)建的活動(dòng),跟原來(lái)開(kāi)啟過(guò)的活動(dòng)是不一樣的。這時(shí)要是按下多次返回鍵,理論上遲早會(huì)返回到某個(gè)已經(jīng)銷(xiāo)毀的活動(dòng)。如果被回收掉的活動(dòng)一旦又重新被調(diào)用時(shí),會(huì)像一般啟動(dòng)一樣再次調(diào)用活動(dòng)的onCreate方法。如果程序中有直接調(diào)用finish方法來(lái)關(guān)閉活動(dòng)的話,系統(tǒng)會(huì)跳過(guò)先凍結(jié)的階段,直接暫停,停止,然后銷(xiāo)毀。另外按返回鍵也可以回到原來(lái)的活動(dòng)。直到活動(dòng)2完成一般啟動(dòng)流程后,活動(dòng)1才會(huì)被停止。(2)調(diào)用另一個(gè)活動(dòng)調(diào)用另一個(gè)活動(dòng)的基本流程為onpause(l)一onCreate(2)一onstart(2)一0nResume(2)一onStop(l)。該流程首先分配資源給這個(gè)活動(dòng)(創(chuàng)建狀態(tài)),然后將活動(dòng)的內(nèi)容顯示到屏幕上(啟動(dòng)狀態(tài))。當(dāng)這些優(yōu)先級(jí)高的事件處理完后,活動(dòng)就改進(jìn)入繼續(xù)狀態(tài),此時(shí)又取得屏幕的控制權(quán)。當(dāng)用戶按下返回鍵回到上一個(gè)活動(dòng)時(shí),會(huì)先到重新啟動(dòng)狀態(tài),再到一般的啟動(dòng)狀態(tài)。(2)可見(jiàn)與不可見(jiàn)(啟動(dòng)/重新啟動(dòng)/停止)當(dāng)活動(dòng)運(yùn)行到啟動(dòng)狀態(tài)時(shí),就可以在屏幕上看到這個(gè)活動(dòng)。Activity startsActivity is shut downActivity is runningProcess is killedonCreate()onStart()onResume()onPause()New Activity is startedYour Activity is no longer visibleonStop()onDestory()User navigates back to your activityOther applications need memoryYour Activity es to the foregroundYour Activity es to the foregroundonRestart()圖41 Android活動(dòng)生命周期圖41所示的七個(gè)狀態(tài)又可以歸納成三組:(l)資源分配(創(chuàng)建/銷(xiāo)毀)完整的活動(dòng)生命周期由創(chuàng)建狀態(tài)開(kāi)始,由銷(xiāo)毀狀態(tài)結(jié)束。要手動(dòng)終止活動(dòng),可以在程序中調(diào)用finish方法。處于停止?fàn)顟B(tài)的活動(dòng),還可以通過(guò)通知來(lái)喚醒。(3)停止?fàn)顟B(tài)停止?fàn)顟B(tài)是指有其他活動(dòng)正在執(zhí)行,而這個(gè)活動(dòng)己經(jīng)離開(kāi)屏幕,不再動(dòng)作的狀態(tài)。新出現(xiàn)的警告對(duì)話框等界面元件蓋住了原來(lái)的活動(dòng)畫(huà)面。(2)暫停狀態(tài)暫停狀態(tài)是指當(dāng)活動(dòng)暫時(shí)暗下來(lái),退到背景畫(huà)面的狀態(tài)。在Android平臺(tái)上,同一個(gè)時(shí)刻只會(huì)有一個(gè)活動(dòng)處于活動(dòng)或運(yùn)行狀態(tài)。 堆棧管理狀態(tài)Android的虛擬機(jī)是使用堆棧管理。開(kāi)發(fā)者可以在程序中添加一些各狀態(tài)相對(duì)應(yīng)的流程,每次活動(dòng)狀態(tài)改變時(shí),就會(huì)執(zhí)行相對(duì)應(yīng)的流程。關(guān)于進(jìn)程的生命周期將在下一節(jié)中介紹,本節(jié)主要介紹活動(dòng)的生命周期。當(dāng)系統(tǒng)內(nèi)存即將不足的時(shí)候,會(huì)依照優(yōu)先級(jí)自動(dòng)進(jìn)行進(jìn)程的回收。Android應(yīng)用程序的生命周期是由Android框架進(jìn)行管理,而不是由應(yīng)用程序直接控制。當(dāng)同時(shí)執(zhí)行的程序過(guò)多,或是關(guān)閉的程序沒(méi)有正確釋放掉內(nèi)存,系統(tǒng)運(yùn)行時(shí)就會(huì)覺(jué)得越來(lái)越慢,甚至不穩(wěn)定。同時(shí)執(zhí)行多個(gè)程序有它的明顯好處,但也有它的缺點(diǎn)。手機(jī)的特性,就是應(yīng)該能隨時(shí)在未完成目前動(dòng)作的時(shí)候,暫停正在使用的功能,切換到接電話、接收短信模式,而且在接完電話回到應(yīng)用程序時(shí),還希望能看到一樣的內(nèi)容。其他的應(yīng)用程序可以使用這些方法來(lái)保存和檢索此內(nèi)容提供者處理過(guò)的數(shù)據(jù)。如果應(yīng)用程序之間想要共享數(shù)據(jù),就需要使用用內(nèi)容提供者。這樣做的好處是,可以保護(hù)系統(tǒng)及應(yīng)用程序,避免被其他不正常的應(yīng)用程序所影響。這個(gè)時(shí)候把調(diào)用者(Context,例如Activity)會(huì)和Service綁定在一起,Context退出了,Service就會(huì)調(diào)用on Unbind on Destroyed相應(yīng)退出,所謂綁定在一起就共存亡了 。補(bǔ)充說(shuō)明:傳遞給start Service()的Intent對(duì)象會(huì)傳遞給on Start()方法。該Service的調(diào)用者再啟動(dòng)起來(lái)后可以通過(guò)stop Service關(guān)閉Service。service 可以在和多場(chǎng)合的應(yīng)用中使用,比如播放多媒體的時(shí)候用戶啟動(dòng)了其他Activity這個(gè)時(shí)候程序要在后臺(tái)繼續(xù)播放,比如檢測(cè)SD 卡上文件的變化,再或者在后臺(tái)記錄你地理信息位置的改變等等。其實(shí)這個(gè)播放就是由播放音樂(lè)的Service進(jìn)行控制。Service 是一種程序,它可以運(yùn)行很長(zhǎng)時(shí)間,但是它卻沒(méi)有用戶界面。Service 是android 系統(tǒng)中的一種組件,它跟Activity 的級(jí)別差不多,但是他不能自己運(yùn)行,只能后臺(tái)運(yùn)行,并且可以和其他組件進(jìn)行交互。它可以運(yùn)行在它自己的進(jìn)程,也可以運(yùn)行在其他應(yīng)用程序的進(jìn)程里,這取決于自身的需要。當(dāng)一個(gè)意圖接收器被觸發(fā)時(shí),系統(tǒng)會(huì)根據(jù)需要來(lái)啟動(dòng)應(yīng)用程序。意圖接收器并不顯示UI界面,它是通過(guò)NotificationManager來(lái)通知用戶他們感興趣的事件發(fā)生了。我們可以選擇性的移除一些沒(méi)有必要保留的屏幕,因?yàn)锳ndroid會(huì)把每個(gè)應(yīng)用的開(kāi)始到當(dāng)前的每個(gè)屏幕保存在堆棧中。當(dāng)打開(kāi)一個(gè)新的屏幕時(shí),之前一個(gè)屏幕會(huì)被置為暫停狀態(tài),并且壓入歷史堆棧中。和網(wǎng)頁(yè)跳轉(zhuǎn)稍微有些不一樣的是,Activity之間的跳轉(zhuǎn)有可能返回值,例如,從Activity A 跳轉(zhuǎn)到Activity B,那么當(dāng)Activity B 運(yùn)行結(jié)束的時(shí)候,有可能會(huì)給Activity A 一個(gè)返回值。一般一個(gè)Android 應(yīng)用是由多個(gè)Activity 組成的。在Activity 當(dāng)中可以添加一些Button、Check box 等控件。在Android的程序當(dāng)中,Activity 一般代表手機(jī)屏幕的一屏。這個(gè)配置文件是每個(gè)Android應(yīng)用程序所必需的。由于不是所有的Android應(yīng)用程序都必須具備上面的四個(gè)組件,可以由上面的一個(gè)或幾個(gè)來(lái)組建。 Android應(yīng)用程序結(jié)構(gòu)解析通常由以下四個(gè)組件來(lái)構(gòu)建一個(gè)完整的Android應(yīng)用程序。典型的例子就是使用內(nèi)容提供者來(lái)訪問(wèn)聯(lián)系人列表。最常見(jiàn)的通知包括短信息、通話記錄和語(yǔ)音郵件,但是應(yīng)用程序也可以創(chuàng)建它們自己的通知事件。例如媒體播放器的服務(wù),當(dāng)用戶退出媒體選擇的界面時(shí),仍然希望音樂(lè)依然可以繼續(xù)播放,這時(shí)就可用服務(wù)來(lái)保證當(dāng)用戶界面關(guān)閉時(shí)音樂(lè)還繼續(xù)播放著。它可以運(yùn)行在它自己的進(jìn)程,也可以運(yùn)行在其他應(yīng)用程序的進(jìn)程里,這取決于自身的需要。意圖也可以用于廣播系統(tǒng)范圍內(nèi)的有效事件(例如通知事件)。比如應(yīng)用程序想要顯示一個(gè)網(wǎng)頁(yè),那么它可以通過(guò)創(chuàng)建一個(gè)Intent實(shí)例并將其傳遞給系統(tǒng)來(lái)表示意圖瀏覽這個(gè)URI。開(kāi)發(fā)者可以通過(guò)創(chuàng)建一個(gè)新的視圖的方法來(lái)使用自定義的圖形處理技術(shù)(比如開(kāi)發(fā)游戲,或者是使用了不常用的用戶圖形窗口界面)。Android的用戶界面由一系列的視圖樹(shù)構(gòu)成。不過(guò)這不是必須的,有些活動(dòng)從不顯示UI界面。(2)活動(dòng)活動(dòng)就是一個(gè)有生命周期的對(duì)象。也可以使用此文件以聲明方式定義應(yīng)用程序所需的權(quán)限,以及將特定權(quán)限授予使用該應(yīng)用程序的Service的其他應(yīng)用程序。此文件定義應(yīng)用程序的Activity、ContentProvider、Service和舉例來(lái)說(shuō),控制文件就是把活動(dòng)和要接收的意圖(Intents)連接在一起的“膠水”。包括API中的7個(gè)部分,以及活動(dòng),意圖接收器,服務(wù)和內(nèi)容提供者。這個(gè)配置文件是每個(gè)Android應(yīng)用程序所必需的,用于定義應(yīng)用程序的組件、組件的功能以及必要條件等。 Android應(yīng)用的構(gòu)成和工作機(jī)制對(duì)于一個(gè)Android應(yīng)用程序來(lái)說(shuō),是由Activity、IntentReceiver、Service、Content Provider四部分組成,但并不是每一個(gè)Android應(yīng)用程序都必須由這四部分組成。 Android運(yùn)行時(shí)的組件雖然Android是用Java語(yǔ)言來(lái)開(kāi)發(fā)、撰寫(xiě)應(yīng)用程序,但卻不使用Java運(yùn)行時(shí)組件來(lái)執(zhí)行Java程序,而是使用了由Google自行研發(fā)的Android運(yùn)行時(shí)組件來(lái)執(zhí)行程序。(9)lib c:就是一個(gè)BSD標(biāo)準(zhǔn)C類(lèi)庫(kù)。(7)SQLite: SQLite是一套開(kāi)放性的關(guān)聯(lián)式資料庫(kù),能夠被所有應(yīng)用程序使用的輕量級(jí)的關(guān)系數(shù)據(jù)庫(kù)引擎。SSL握手協(xié)議(SSL Hand shake proto col):它建立在SSL記錄協(xié)議之上,用于在實(shí)際的數(shù)據(jù)傳輸開(kāi)始前,通訊雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。SSL協(xié)議位于TCP膽協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。(6)SSL:(SecureSocketsuyer),中文名為“安全套接層協(xié)議層”,它是網(wǎng)景公司提出的基于WEB應(yīng)用的安全協(xié)議,. SSL協(xié)議指定了一種在應(yīng)用程序協(xié)議(如HTTP、Telenet、NMTP和FTP等)和TCP/IP協(xié)議之間提供數(shù)據(jù)安全性分層的機(jī)制,它為T(mén)CP/IP連接提供數(shù)據(jù)加密、服務(wù)器認(rèn)證、消息完整性以及可選的客戶機(jī)認(rèn)證。(4)Media Frame work:主要是以packetVideo公司的OpenCORE為基礎(chǔ)所發(fā)展的多媒體類(lèi)庫(kù),該庫(kù)支持回放和錄制大量流行的音視頻格式和靜態(tài)圖片。該庫(kù)使用硬件加速(當(dāng)硬件可用時(shí)),可以將硬件的3D功能做最佳化的處理顯示。例如:在2D、2D顯示上的合成、疊合動(dòng)作。開(kāi)發(fā)者可以通過(guò)應(yīng)用程序框架使用這些功能。(9)包管理器:管理所有安裝在Android系統(tǒng)內(nèi)的包。(7)位置管理器:用來(lái)管理地圖服務(wù)的相關(guān)功能。例如:啟動(dòng)應(yīng)用程序要用到的資源準(zhǔn)備及關(guān)閉應(yīng)用程序時(shí)釋放內(nèi)存及相關(guān)資源等工作。(4)通知管理器:提供應(yīng)用程序在狀態(tài)欄中顯示應(yīng)用程序自定義的提示信息。(3)資源管理器:提供各種非程序代碼的資源讓?xiě)?yīng)用程序去使用。目前所有的應(yīng)用程序是由服務(wù)及系統(tǒng)來(lái)組成,包含有:(l)一套強(qiáng)大和可擴(kuò)展的視圖系統(tǒng):用來(lái)建構(gòu)一個(gè)應(yīng)用程序的基本組件,包了在開(kāi)發(fā)系統(tǒng)畫(huà)面時(shí),常用的列表、網(wǎng)格、文本框、按鈕等控制項(xiàng),甚至是內(nèi)嵌的Web瀏覽器。 應(yīng)用程序框架在Android SDK中,定義了讓開(kāi)發(fā)者使用與核心應(yīng)用程序相同API的權(quán)限應(yīng)用程序框架是為了要簡(jiǎn)化組件的重新利用而設(shè)計(jì)的,應(yīng)用程序可以發(fā)布功能為其它應(yīng)用程序所使用。 Android架構(gòu)分析下框圖顯示的是Android架構(gòu)的五個(gè)主要部分。這項(xiàng)技術(shù)可以用來(lái)引導(dǎo)飛機(jī)、船舶、車(chē)輛以及個(gè)人。(9)GPS: Global Positioning System,即全球定位系統(tǒng),它是一個(gè)由覆蓋全球的24顆衛(wèi)星組成的衛(wèi)星系統(tǒng)。其目前可使用的標(biāo)準(zhǔn)有兩個(gè)。WiFi(WirelessFidelity),即無(wú)線保真技術(shù),與藍(lán)牙技術(shù)一樣,同屬于在辦公室和家庭中使用的短距離無(wú)線技術(shù)。EDGE是一種從GSM到3G的過(guò)渡技術(shù),它主要是在GSM系統(tǒng)中采用了一種新的調(diào)制方法,即最先進(jìn)的多時(shí)隙操作和SPSK調(diào)制技術(shù)。(8)藍(lán)牙、EDGE、3G及WiFi:藍(lán)牙是一種新型、開(kāi)放、低成本、短距離的無(wú)線連接技術(shù),可取代短距離的電纜,實(shí)現(xiàn)話音和數(shù)據(jù)的無(wú)線傳輸。(7)GSM技術(shù):Global System for Mobile Communications,即全球移動(dòng)通訊系統(tǒng),俗稱“全球通”,是一種起源于歐洲的移動(dòng)通信技術(shù)標(biāo)準(zhǔn),是第二代移動(dòng)通信技術(shù),其開(kāi)發(fā)目的是讓全球各地可以共同使用一個(gè)移動(dòng)電話網(wǎng)絡(luò)標(biāo)準(zhǔn),讓用戶使用一部手機(jī)就能行遍全球。這同時(shí)包括對(duì)音頻(如播放MP3或其他音樂(lè)文件等)和視頻(如播放從網(wǎng)上下載的視頻)的支持,并支持“播放URI地址”(Note:URI即是統(tǒng)一資源識(shí)別地址)模式—在網(wǎng)絡(luò)上直接播放的流媒體。SQLite也是一套開(kāi)放性的關(guān)聯(lián)式資料庫(kù),其特點(diǎn)在于輕量性方面的設(shè)計(jì)結(jié)構(gòu),更適合在手機(jī)上使用。它雖然很小巧,但是支持的SQL語(yǔ)句毫不遜色于其它開(kāi)源數(shù)據(jù)庫(kù)。它能夠支持Windows/Linux/U nix等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如php,Java等,還有ODBC接口,同樣比起Mysql,PostgreSQL來(lái)講,它的處理速度比它們都快。(5)SQLite數(shù)據(jù)庫(kù):SQLite提供結(jié)構(gòu)化的數(shù)據(jù)存取。在2D方面,Android提供了一套特有的類(lèi)庫(kù)SGL,(openGL for Embedded systems)規(guī)范的類(lèi)庫(kù)。配合Android手機(jī)的功能,可以在瀏覽網(wǎng)頁(yè)時(shí),達(dá)到更好的效果,例如:局部性的縮放網(wǎng)頁(yè)上的資訊、觸控式的操作等效果。(3)集成的瀏覽器:集成的瀏覽器是Android內(nèi)建的瀏覽器,是以WebKit的瀏覽引擎為基礎(chǔ)所開(kāi)發(fā)成的。 Android的功能特征(l)應(yīng)用程序架構(gòu):在應(yīng)用程序架構(gòu)內(nèi)已經(jīng)具備多種不同的基礎(chǔ)組件,在開(kāi)發(fā)應(yīng)用程序時(shí),就可以直接調(diào)用這些組件來(lái)使用,可以節(jié)省開(kāi)發(fā)應(yīng)用程序的心力及時(shí)間。3 Android的架構(gòu)分析An