【文章內(nèi)容簡(jiǎn)介】
它占用的資源非常低。它能夠支持 Windows/Linux/U nix 等主流的操作系統(tǒng),同時(shí)能夠跟很多程序語(yǔ)言相結(jié)合,比如 php, Java 等,還有 ODBC 接口,同樣比起 Mysql, PostgreSQL 來(lái)講,它的處理速度比它們都快。它無(wú)需安裝和管理配置,它是一個(gè)儲(chǔ)存在單一磁盤(pán)文件中的完整數(shù)據(jù)庫(kù),體積小只有 250KB 但支持?jǐn)?shù)據(jù)庫(kù)大小至 2TB。它雖然很小巧,但是支持的 SQL語(yǔ)句毫不遜色于其它開(kāi)源數(shù)據(jù)庫(kù)。同時(shí)它還支持事務(wù)功能和并 發(fā)處理等等。 SQLite 也是一套開(kāi)放性的關(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 Communications,即全球 移動(dòng)通訊系統(tǒng), 5 俗稱(chēng)”全球通”,是一種起源于歐洲的移動(dòng)通信技術(shù)標(biāo)準(zhǔn),是第二代移動(dòng)通信技術(shù),其開(kāi)發(fā)目的是讓全球各地可以共同使用一個(gè)移動(dòng)電話網(wǎng)絡(luò)標(biāo)準(zhǔn),讓用戶(hù)使用一部手機(jī)就能行遍全球。 GSM 技術(shù)是屬于手機(jī)硬件方面的展現(xiàn),也是在開(kāi)發(fā) Android 應(yīng)用程序時(shí)可以突出的特點(diǎn)之一。 (8)藍(lán)牙、 EDGE、 3G及 WiFi:藍(lán)牙是一種新型、開(kāi)放、低成本、短距離的無(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)中采用了一種新的調(diào)制方法,即最先進(jìn)的多時(shí)隙操作和 SPSK調(diào)制技術(shù)。由于 8PSK 可將現(xiàn)有 GSM網(wǎng)絡(luò)采用的 GMSK 調(diào)制技術(shù)的信號(hào)空間從 2 擴(kuò)展到 8,從而使每個(gè)符號(hào)所包含的信息是原來(lái)的 4 倍。 WiFi(WirelessFidelity),即無(wú)線保真技術(shù),與藍(lán)牙技術(shù)一樣,同屬于在辦公室和家庭中使用的短距離無(wú)線技術(shù)。該技術(shù)使用的是 附近的頻段,該頻段目前尚屬?zèng)]用許可的無(wú)線頻段。其目前可使用的標(biāo)準(zhǔn)有兩個(gè),分別是 和 。這些通訊能力也是屬于手機(jī)硬件方面的展現(xiàn),也是在開(kāi)發(fā) Android 應(yīng)用程序時(shí)可以突出的特點(diǎn)之一。 (9)GPS: Global Positioning System,即全球定位系統(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ī)、船舶、車(chē)輛以及個(gè)人。這個(gè)同樣也是屬于手機(jī)硬體方面的體現(xiàn),也是在開(kāi)發(fā) Android 應(yīng)用程序是可以突出的特點(diǎn) 之一。 Android 系統(tǒng)架構(gòu)分析 Android其本質(zhì)就是在標(biāo)準(zhǔn)的 Linux系統(tǒng)上增加了 Java虛擬機(jī) Dalvik,并在 Dalvik虛擬機(jī)上搭建了一個(gè) JAVA 的 application framework,所有的應(yīng)用程序都是基于 JAVA的 application framework 之上。 Android 的系統(tǒng)架構(gòu)組織圖如下圖所示: 基于 Android 的手機(jī)衛(wèi)士的開(kāi)發(fā) 6 圖 Android 的系統(tǒng)架構(gòu)圖 在系統(tǒng)架構(gòu)的分析的過(guò)程中主要分為三個(gè)模塊。下面就詳細(xì)的去介紹這三個(gè)模塊。 一、 應(yīng)用程序框架 在 Android SDK 中,定義 了讓開(kāi)發(fā)者使用與核心應(yīng)用程序相同 API 的權(quán)限應(yīng)用程序框架是為了要簡(jiǎn)化組件的重新利用而設(shè)計(jì)的,應(yīng)用程序可以發(fā)布功能為其它應(yīng)用程序所使用。但是,這要受限于應(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)用程序的基本組件,包了在開(kāi)發(fā)系統(tǒng)畫(huà)面時(shí),常用的列表、網(wǎng)格、文本框、按鈕等控制項(xiàng),甚至是內(nèi)嵌的 Web 瀏覽器。 (2)內(nèi)容提供者 :使應(yīng)用程序可以訪問(wèn)另一個(gè)應(yīng)用程序的數(shù)據(jù) (如聯(lián)系人數(shù)庫(kù) ),或者共享它們自己的數(shù)據(jù)。 (3)資源管理器 :提供各種非程序代碼的資源讓?xiě)?yīng)用程序去使用。例如 :本字符串、圖形文件或排版相關(guān)的布局文件。 (4)通知管理器 :提供應(yīng)用程序在狀態(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)資源等工作。 7 (6)視窗管理器 :用來(lái)管理所有啟動(dòng)程序的視窗。 (7)位置管理器 :用來(lái)管理地圖服務(wù)的相關(guān)功能。 (8)電話管理器 :用來(lái)管理用戶(hù)撥打與接聽(tīng)電話的 相關(guān)功能。 (9)包管理器 :管理所有安裝在 Android 系統(tǒng)內(nèi)的包。 二、類(lèi)庫(kù) 在 Android 中包含一些 C/C++的類(lèi)庫(kù),這些類(lèi)庫(kù)能被 Android 系統(tǒng)中不同的組件來(lái)使用。開(kāi)發(fā)者可以通過(guò)應(yīng)用程序框架使用這些功能。部分核心類(lèi)庫(kù)列表如下 : (1)surface Manager:主要的功能是讓開(kāi)發(fā)者可以去存取 /顯示系統(tǒng)及管理的功能,在 [顯示 ]與 [存取操作 ]間的對(duì)應(yīng)、互動(dòng)以及實(shí)現(xiàn)無(wú)接縫的 2D/3D多應(yīng)用程序之間的整合。例如 :在 2D、 2D顯示上的合成、疊合動(dòng)作。 (2)3Dlibraries:主要是依 規(guī)范所定義的 3D繪圖引擎。該庫(kù)使用硬件加速 (當(dāng)硬件可用時(shí) ),可以將硬件的 3D 功能做最佳化的處理顯示。 (3)SGL:主要是處理有關(guān)顯示 2D 方面的繪圖引擎。 (4)Media Frame work:主要是以 packetVideo 公司的 OpenCORE 為基礎(chǔ)所發(fā)展的多媒體類(lèi)庫(kù),該庫(kù)支持回放和錄制大量流行的音視頻格式和靜態(tài)圖片。例如 :MPEG 、MP AAC、 AMR、 JPG、 PNG、 GIF 等格式 (5)Free Type:主要是用來(lái)顯示點(diǎn)陣圖和處理向量字形的。 (6)SSL:(secureSocketsuyer),中文名為“安全套接層協(xié)議層”,它是網(wǎng)景公司提出的基于 WEB應(yīng)用的安全協(xié)議,當(dāng)前版本為 。 SSL協(xié)議指定了一種在應(yīng)用程序協(xié)議 (如HTTP、 Tele、 NMTP 和 FTP 等 )和 TCP/IP 協(xié)議之間提供數(shù)據(jù)安全性分層的機(jī)制,它為T(mén)CP/IP 連接提供數(shù)據(jù)加密、服務(wù)器認(rèn)證、消息完整性以及可選的客戶(hù)機(jī)認(rèn)證。它已被廣泛地用于 Web 瀏覽器與服務(wù)器之間的身份認(rèn)證和加密數(shù)據(jù)傳輸。 SSL 協(xié)議位于 TCP 膽協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供安全支持。 SSL 協(xié)議可分為兩層 :SSL 記錄協(xié)議 (SSL Record Proto col):它建立在可靠的傳輸協(xié)議 (如 TCP)之上,為高層協(xié)議提供數(shù)據(jù)封裝、壓縮、加密等基本功能的支持。 SSL 握手協(xié)議 (SSL Hand shake proto col):它建立在 SSL 記錄協(xié)議之上,用于在實(shí)際的數(shù)據(jù)傳輸開(kāi)始前,通訊雙方進(jìn)行身份認(rèn)證、協(xié)商加密算法、交換加密密鑰等。 SSL 協(xié)議提供的服務(wù)主要有 :①認(rèn)證用戶(hù)和服務(wù)器,確保數(shù)據(jù)發(fā)送到正確的客戶(hù)機(jī)和服務(wù)器 。②加密數(shù)據(jù)以防止數(shù)據(jù)中途被竊取 。③維護(hù)數(shù)據(jù)的完整性,確保數(shù)據(jù)在傳輸過(guò)程中不被改變。 (7)SQLite:SQLite 是一套開(kāi)放 性的關(guān)聯(lián)式資料庫(kù),能夠被所有應(yīng)用程序使用的輕量級(jí)的關(guān)系數(shù)據(jù)庫(kù)引擎。 (8)web Kit:是一個(gè)先進(jìn)的網(wǎng)頁(yè)瀏覽器引擎,被用來(lái)構(gòu)建 Android 瀏覽器和內(nèi)嵌的web 視圖,也可以讓開(kāi)發(fā)者利用這個(gè)引擎來(lái)做不同的應(yīng)用。 基于 Android 的手機(jī)衛(wèi)士的開(kāi)發(fā) 8 (9)lib c:就是一個(gè) BSD 標(biāo)準(zhǔn) C 類(lèi)庫(kù)。但是,針對(duì) Linux 嵌入式裝置進(jìn)行過(guò)最佳化的調(diào)整。 三、 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í)行程序。Android 運(yùn)行時(shí)組件包括兩個(gè)重要的部分,一個(gè)是核心類(lèi)庫(kù),另一個(gè)是 Dalvik 虛擬機(jī)。 Android 應(yīng)用的構(gòu)成和工作機(jī)制 對(duì)于一個(gè) Android應(yīng)用程序來(lái)說(shuō),是由 Activity、 IntentReceiver、 Service、 Content Provider 四部分組成,但并不是每一個(gè) Android 應(yīng)用程序都必須由這四部分組成。在應(yīng)用程序中使用時(shí),需要在配置文件 中進(jìn)行配置。這個(gè)配置文件是每個(gè) Android 應(yīng)用程序所必需的,用于定義應(yīng)用程序的組件、組件的功能 以及必要條件等。 Android 應(yīng)用的構(gòu)成和工作流程如下圖: I n t e n tR e c e i v e rA c t i v i t y外 部 事 件A c t i v i t yS e r v i c eB i n d e r存 儲(chǔ) 設(shè) 備C o n t e n t P r o vi d e rI n t e n t通 過(guò) C o n t e n t P r o v i d e r進(jìn) 行 數(shù) 據(jù) 存 儲(chǔ)通 過(guò) I n t e n t R e c e i v e r對(duì) 外 部 事 件 進(jìn) 行 響 應(yīng)通 過(guò) I n t e n t 實(shí) 現(xiàn) 活 動(dòng)之 間 的 轉(zhuǎn) 換通 過(guò) B i n d e r 對(duì) S e r v i c e 進(jìn)行 綁 定 圖 Android 的工作流程圖 9 第 2 章 Intent 詳解 Intent 簡(jiǎn)介 在一個(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è)媒體中介的作用,專(zhuān)門(mén)提供組件之間互相調(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 中的描述,到 中找到滿足此 Intent要求的 Activity。系統(tǒng)會(huì)調(diào)用找到的 Activity,即為 detailActivity,最終傳入 Intent,detailActivitv 則會(huì)根據(jù)此 Intent 中的描述,執(zhí)行相應(yīng)的操作。 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è)重要屬性外,還有一些附加屬性: 類(lèi)別:被執(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í)行。 Android 中如何解析 Intent 在應(yīng)用中,可以以?xún)煞N形式來(lái)使用 Intent: (l)直接