【正文】
P、Telenet、NMTP和FTP等)和TCP/IP協(xié)議之間提供數(shù)據(jù)安全性分層的機(jī)制,它為TCP/IP連接提供數(shù)據(jù)加密、服務(wù)器認(rèn)證、消息完整性以及可選的客戶機(jī)認(rèn)證。SSL協(xié)議位于TCP膽協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。SSL握手協(xié)議(SSL Hand shake proto col):它建立在SSL記錄協(xié)議之上,用于在實(shí)際的數(shù)據(jù)傳輸開始前,通訊雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。②加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊取。(7)SQLite:SQLite是一套開放性的關(guān)聯(lián)式資料庫,能夠被所有應(yīng)用程序使用的輕量級(jí)的關(guān)系數(shù)據(jù)庫引擎。(9)lib c:就是一個(gè)BSD標(biāo)準(zhǔn)C類庫。 Android運(yùn)行時(shí)組件雖然Android是用Java語言來開發(fā)、撰寫應(yīng)用程序,但卻不使用Java運(yùn)行時(shí)組件來執(zhí)行Java程序,而是使用了由Google自行研發(fā)的Android運(yùn)行時(shí)組件來執(zhí)行程序。對于一個(gè)Android應(yīng)用程序來說,是由Activity、IntentReceiver、Service、Content Provider四部分組成,但并不是每一個(gè)Android應(yīng)用程序都必須由這四部分組成。這個(gè)配置文件是每個(gè)Android應(yīng)用程序所必需的,用于定義應(yīng)用程序的組件、組件的功能以及必要條件等。舉例來說,控制文件就是把活動(dòng)和要接收的意圖(Intents)連接在一起的“膠水”。一個(gè)活動(dòng)就是完成某些工作的代碼塊,這部分工作還可能包括對用戶UI界面的顯示。(3)視圖視圖可以將其自身繪制到屏幕上。接口都是由一組以樹的形式出現(xiàn)的視圖組成的。(4)意圖意圖是一個(gè)簡單的消息對象,它表示程序想做某事的“意圖”。系統(tǒng)將定位到能處理這一Intent的代碼(在當(dāng)前情況下就是瀏覽器),并運(yùn)行之。(5)服務(wù)服務(wù)是運(yùn)行在后臺(tái)的一段代碼。其它的組件可以綁定到一個(gè)服務(wù)上來,通過遠(yuǎn)程過程調(diào)用(RPC)來調(diào)用這個(gè)方法。 (6)通知通知將以小圖標(biāo)的形式呈現(xiàn)在狀態(tài)欄里,用戶通過與圖標(biāo)的交互來接收消息。(7)內(nèi)容提供者內(nèi)容提供者是用來提供對設(shè)備上數(shù)據(jù)進(jìn)行訪問。應(yīng)用程序也可以使用其它程序通過內(nèi)容提供者提供的數(shù)據(jù),同時(shí)也可以定義自己的內(nèi)容提供者來向其它應(yīng)用提供數(shù)據(jù)訪問服務(wù)。①活動(dòng)②意圖接收器③服務(wù)④內(nèi)容提供者然而,并不是所有的Android應(yīng)用程序都必須具備上面的四個(gè)組件,可以由上面的一個(gè)或幾個(gè)來組建。這個(gè)配置文件是每個(gè)Android應(yīng)用程序所必需的。每個(gè)活動(dòng)都是Activity的子類,并實(shí)現(xiàn)了一些獨(dú)有的功能,如管理UI顯示和UI的反饋事件。大多數(shù)的應(yīng)用程序通常包括多個(gè)界面。每個(gè)界面其實(shí)都可看作是一個(gè)活動(dòng)。在一些情況下,活動(dòng)能夠返回給它的上級(jí)界面一個(gè)返回值,例如一個(gè)提供給用戶選擇照片的活動(dòng)可以返回給它的調(diào)用者用戶選擇了哪個(gè)照片文件。用戶可以使用返回鍵使前一個(gè)活動(dòng)重現(xiàn)。默認(rèn)情況下,Android會(huì)為每個(gè)應(yīng)用程序保留從主界面開始的歷史堆棧。一個(gè)意圖描述了一個(gè)應(yīng)用程序想要做什么。典型的動(dòng)作類型包括MAIN、VIEW、PICK、EDIT等等,而動(dòng)作對應(yīng)的數(shù)據(jù)則以URI的形式表示。除此之外,還有一個(gè)被稱作意圖過濾器(IntentFiher)的相關(guān)類。如上例中所描述,想要正常顯示一個(gè)聯(lián)系人信息的界面,必須聲明一個(gè)意圖過濾器,它說明當(dāng)有聯(lián)系人數(shù)據(jù)要被在界面上顯示時(shí),知道如何處理它們。例如:一個(gè)活動(dòng)使用startActivity(myIntent)來調(diào)用其他活動(dòng)時(shí),系統(tǒng)會(huì)查找所有已經(jīng)安裝的應(yīng)用程序的意圖過濾器,并從中挑選出能夠匹配myIntent意圖的活動(dòng)。當(dāng)startActivity方法被調(diào)用,解析意圖的處理過程隨之發(fā)生,這個(gè)機(jī)制有以下兩個(gè)突出的優(yōu)點(diǎn):活動(dòng)可以通過一個(gè)以意圖形式產(chǎn)生的請求來重用其他組件的功能。當(dāng)想要編寫代碼來對外部事件做一些處理時(shí),可以使用意圖接收器。()來注冊自己的意圖接收器。服務(wù)是具有長生命周期并且沒有用戶界面的代碼。這樣做的好處是,可以保護(hù)系統(tǒng)及應(yīng)用程序,避免被其他不正常的應(yīng)用程序所影響。如果應(yīng)用程序之間想要共享數(shù)據(jù),就需要使用用內(nèi)容提供者。其他的應(yīng)用程序可以使用這些方法來保存和檢索此內(nèi)容提供者處理過的數(shù)據(jù)。而這四種組件是獨(dú)立的,它們之間可以互相調(diào)用,協(xié)調(diào)工作,最終組成一個(gè)真正的Android應(yīng)用。意圖負(fù)責(zé)對應(yīng)用中一次操作的動(dòng)作、動(dòng)作對應(yīng)的數(shù)據(jù)、附加數(shù)據(jù)進(jìn)行描述,Android則根據(jù)此意圖的描述,負(fù)責(zé)找到相應(yīng)的組件,將意圖傳遞給它,并完成組件的調(diào)用。例如,在一個(gè)聯(lián)系人維護(hù)的應(yīng)用中,當(dāng)在一個(gè)聯(lián)系人列表屏幕(假設(shè)對應(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)作對應(yīng)的查看對象是“某聯(lián)系人”,然后調(diào)用startActivity(intent intent),將構(gòu)造的Intent傳入,系統(tǒng)會(huì)根據(jù)此intent中的描述。在Android參考文檔中,對意圖的定義是執(zhí)行某操作的一個(gè)抽象描述。此外,還可以根據(jù)應(yīng)用的需要,定義自己的動(dòng)作,并可定義相應(yīng)的活動(dòng)來處理自定義的動(dòng)作。另外,除了動(dòng)作和數(shù)據(jù)這兩個(gè)重要屬性外,還有一些附加屬性:類別:被執(zhí)行動(dòng)作的附加信息。而ALTERNATIVECATEGORY表示當(dāng)前的意圖是一系列的可選動(dòng)作中的一個(gè),這些動(dòng)作可以在同一個(gè)數(shù)據(jù)上執(zhí)行。一般意圖的數(shù)據(jù)類型能夠根據(jù)數(shù)據(jù)本身進(jìn)行判定,但是通過設(shè)置這個(gè)屬性,可以強(qiáng)制采用指定的類型。通常Android會(huì)根據(jù)意圖中包含的其它屬性的信息,比如動(dòng)作、數(shù)據(jù)/數(shù)據(jù)類型、類別進(jìn)行查找,最終找到一個(gè)與之匹配的目標(biāo)組件。指定了這個(gè)屬性以后,意圖的其它所有屬性都是可選的。使用附加信息可以為組件提供擴(kuò)展信息,比如,如果要執(zhí)行“發(fā)送電子郵件”這個(gè)動(dòng)作,可以將電子郵件的標(biāo)題、正文等保存在附加信息里,傳給電子郵件發(fā)送組件。這種語言使系統(tǒng)能夠理解諸如“查看某聯(lián)系人的詳細(xì)信息”之類的短語。應(yīng)用也可以提供自己的活動(dòng)來處理已經(jīng)存在的這樣的“短語”,從而改變這些“短語”的行為。通過指定具體的組件類,通知應(yīng)用啟動(dòng)對應(yīng)的組件。這些意圖需要包含足夠的信息,這樣系統(tǒng)才能根據(jù)這些信息,在所有的可用組件中,確定滿足此意圖的組件。,最終找到匹配的意圖。如果意圖沒有提供數(shù)據(jù)類型,系統(tǒng)將從數(shù)據(jù)中得到數(shù)據(jù)類型。如果意圖中的數(shù)據(jù)不是content:類型的URI,而且意圖也沒有明確指定它的數(shù)據(jù)類型,將根據(jù)意圖中數(shù)據(jù)的格式(比如:或者mailto:)進(jìn)行匹配。如果意圖指定了一個(gè)或多個(gè)類別,這些類別必須全部出現(xiàn)在組建的類別列表中。Android平臺(tái)是個(gè)手機(jī)作業(yè)系統(tǒng)。現(xiàn)在用戶使用智能手機(jī),大多已習(xí)慣使用多工的作業(yè)系統(tǒng)(如windowsMobile),可以在用手機(jī)聽音樂的同時(shí),執(zhí)行其他多個(gè)程序。每多執(zhí)行一個(gè)應(yīng)用程序,就會(huì)多耗費(fèi)一些系統(tǒng)內(nèi)存,而手機(jī)里的內(nèi)存是相當(dāng)有限的。為了解決這個(gè)問題,Android引入了一個(gè)新的機(jī)制—生命周期。通常,每一個(gè)應(yīng)用程序(入口一般會(huì)是一個(gè)活動(dòng)的onCreate方法),都會(huì)占據(jù)一個(gè)進(jìn)程。不管是使用者或開發(fā)者,都無法確定應(yīng)用程序何時(shí)會(huì)被回收。一個(gè)活動(dòng)類別除了OnCreate方法之外,還預(yù)先定義了onPause(暫停)、OnResume(繼續(xù))等的基本方法,當(dāng)從一個(gè)活動(dòng)切換到另一個(gè)活動(dòng)的時(shí)候,原來的活動(dòng)將經(jīng)過一連串的狀態(tài)改變。要讓用戶有好的使用體驗(yàn),活動(dòng)需要在各個(gè)周期中負(fù)責(zé)保管狀態(tài)、恢復(fù)狀態(tài)、傳送資料等工作。主要有四種狀態(tài):(l)活動(dòng)狀態(tài)活動(dòng)狀態(tài)是指用戶啟動(dòng)應(yīng)用程序或活動(dòng)后,活動(dòng)運(yùn)行中的狀態(tài)。其他的活動(dòng)都處于未啟動(dòng)、停止或是暫停的狀態(tài)。當(dāng)警告對話框或電話來了時(shí),都會(huì)讓原來運(yùn)行的活動(dòng)退到背景畫面。活動(dòng)處在暫停狀態(tài)時(shí),用戶無法與原活動(dòng)互動(dòng)。通過按返回鍵,可以調(diào)出所有處于停止?fàn)顟B(tài)的應(yīng)用程序列表。(4)已回收或未啟動(dòng)狀態(tài)已回收或未啟動(dòng)狀態(tài)是指活動(dòng)尚未被啟動(dòng)、已經(jīng)被手動(dòng)終止或己經(jīng)被系統(tǒng)回收的狀態(tài)。如果是被系統(tǒng)回收,可能是因?yàn)閮?nèi)存不足了,所以系統(tǒng)根據(jù)內(nèi)存不足時(shí)的回收規(guī)則,將處于停止?fàn)顟B(tài)的活動(dòng)所占用的內(nèi)存回收。創(chuàng)建時(shí)分配資源,銷毀時(shí)釋放資源。相反地,當(dāng)活動(dòng)運(yùn)行到停止?fàn)顟B(tài)時(shí),這個(gè)活動(dòng)就會(huì)從屏幕上消失。(3)用戶取得屏幕的控制權(quán)(繼續(xù)/暫停)當(dāng)有個(gè)警告對話框、短信、電話等信息進(jìn)入時(shí),原來的活動(dòng)會(huì)進(jìn)入暫停狀態(tài),暫時(shí)放棄屏幕的控制權(quán),被中斷到背景去,將前景交給優(yōu)先級(jí)高的事件。由實(shí)際運(yùn)行來看,我們可以歸納出所有Android應(yīng)用程序都遵循的運(yùn)作流程:(l)一般啟動(dòng)啟動(dòng)一個(gè)活動(dòng)的基本流程為onCreate一onstart一onResume。在一切就緒后,取得屏幕的控制權(quán)(恢復(fù)狀態(tài)),用戶可以開始使用這個(gè)程序。該流程首先凍結(jié)原來的活動(dòng),再交出屏幕控制權(quán)。(3)回到原來活動(dòng)回到原來活動(dòng)的基本流程為onPause(2)一onRestart(1)一onstart(l)一onResume(1)一onstop(2)一onDestroy(2)。(4)退出結(jié)束退出結(jié)束的基本流程為onPause一onStop一onDestroy。(5)回收后再啟動(dòng)回收后再啟動(dòng)的基本流程為oncreate一onstart一onresume。當(dāng)在模擬器上已經(jīng)執(zhí)行過多個(gè)應(yīng)用程序,只要按下返回鍵,就會(huì)開啟最近一次開啟過的活動(dòng)。如果應(yīng)該開啟的活動(dòng)己經(jīng)被回收了,那么這個(gè)活動(dòng)會(huì)再次被創(chuàng)建。所以如果要讓再次被創(chuàng)建的活動(dòng)跟原來開啟過的一樣,那么在活動(dòng)之間切換時(shí),就要保存資料:即在每次活動(dòng)運(yùn)行到暫?;蛲V?fàn)顟B(tài)時(shí)先保存資料,然后在創(chuàng)建時(shí)將資料讀出來。Eclipse平臺(tái):Eclipse 是一個(gè)運(yùn)行插件的平臺(tái)。Android Developer Tools:按照安裝說明安裝 Android Developer Tools(Eclipse 插件)。IntentReceiverIntentReceiverIntentFilter — 這個(gè)文件包含 Android 活動(dòng)所用的視覺元素或資源。(完整)— 這是完整的 文件,包含每個(gè)重要元素的描述。國內(nèi)基本是用Windows系統(tǒng),所以就選擇Windows版本的SDK。圖41(2)接著打開網(wǎng)址。(3)最后是打開網(wǎng)址://(開發(fā)Android的IDE)。(2)彈出對話框后,選擇Search for new features to install,然后點(diǎn)擊Next。(4)在編輯框中輸入更新插件的地址:,點(diǎn)擊OK。(6)在返回的對話框中選擇Android pluginEclipse IntegrationAndroid development Tools并且點(diǎn)擊Next。(8)點(diǎn)擊Finish。(10)重新啟動(dòng)Eclipse。②選擇Android屬性面板。④選擇Apply,最后點(diǎn)擊OK。首先是創(chuàng)建一個(gè)Android工程,然后設(shè)置應(yīng)用啟動(dòng)配置。(l)創(chuàng)建一個(gè)Android工程。按照下面的步驟建立Android工程:①選擇FileNewproject。③設(shè)置工程的用途:選擇create new project in workspace可以建立一個(gè)新的Android工程,輸入工程的名字,代碼的開發(fā)包的名字,應(yīng)用界面的類名字,應(yīng)用程序的標(biāo)題的名字。④點(diǎn)擊Finish。(2)創(chuàng)建Android虛擬機(jī)點(diǎn)擊windowsandroid SDK and AVD Manager,選中Virtual Devices,選擇new按鈕,填寫需要?jiǎng)?chuàng)建的name,并且選擇Target。就完成對應(yīng)版本的android虛擬機(jī)創(chuàng)建。一旦建立了工程啟動(dòng)配置就可以按照如下的步驟調(diào)試程序:從Eclipse的主菜單中選擇RunRun或RunDebug或者點(diǎn)擊工程文件右鍵選擇run asAndroid Application?!靶亲辈樵冘浖绦蛑懈黝惤M件 Explorer中的組件src 文件夾包含示例應(yīng)用程序的包。res 文件夾包含應(yīng)用程序的資源,包括:圖標(biāo),布局文件,字符串。