android 畢業(yè)論文_第1頁(yè)
android 畢業(yè)論文_第2頁(yè)
android 畢業(yè)論文_第3頁(yè)
android 畢業(yè)論文_第4頁(yè)
android 畢業(yè)論文_第5頁(yè)
已閱讀5頁(yè),還剩37頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

本 科 生畢業(yè)論文(設(shè)計(jì)) 題 目 Google Android 手機(jī)嵌入式系統(tǒng) 的研究與開(kāi)發(fā) 學(xué) 院 計(jì)算機(jī)學(xué)院 專(zhuān) 業(yè) 計(jì)算機(jī)科學(xué)與技術(shù) 學(xué)生姓名 李 浩 學(xué) 號(hào) 0643041362 年級(jí) 2006 指導(dǎo)教師 周群彪 教務(wù)處制表 二一 年 五 月 二十 七 日本科畢業(yè)論文 Google Android 手機(jī)嵌入式系統(tǒng)的研究與開(kāi)發(fā) Google Android 手機(jī)嵌入式系統(tǒng)的研究及開(kāi)發(fā) 計(jì)算機(jī)科學(xué)與技術(shù) 學(xué)生 李浩 指導(dǎo)教師 周群彪 摘要 隨著手機(jī)的普及以及手機(jī)應(yīng)用的深入人心,近幾年“智能手機(jī)”成為了人們關(guān)注的話題。在現(xiàn)今這個(gè)智能手機(jī)系統(tǒng)群雄紛爭(zhēng)的時(shí)候, 2008 年 Google 推出了一款名為 Android 的開(kāi)源智能手機(jī)操作系統(tǒng)。 Android 憑借其開(kāi)放性和良好的人機(jī)界面,受到廣大手機(jī)生產(chǎn)商的重視,隨著 3G 時(shí)代的到來(lái),Android 有可能會(huì)改變現(xiàn)在智能手機(jī)市場(chǎng)的格局。 Android 是由 Linux 操作系統(tǒng)、中間件以及核心應(yīng)用程序組成的專(zhuān)門(mén)為移動(dòng)終端設(shè)備開(kāi)發(fā)的層次軟件集。在對(duì) Android 學(xué)習(xí)中,主要做了以下的研究 :首先,Android 系統(tǒng)是一個(gè)層次的軟件集,所以先從層次方面對(duì) Android 進(jìn)行系統(tǒng)研究,主要對(duì)其運(yùn)行時(shí)環(huán)境層以及 Android 應(yīng)用框架層的研究;其次,通過(guò)對(duì) Android 平臺(tái)上應(yīng)用的開(kāi)發(fā),更進(jìn)一步了解 Android這個(gè)系統(tǒng),在開(kāi)發(fā)中,尤其注重 Android 的 Intent 機(jī)制的使用。 主題詞 Android; Android 內(nèi)核層 ; Android 構(gòu)架 ; Android 應(yīng)用 ; Android SDK; Android 開(kāi)發(fā) 本科畢業(yè)論文 Google Android 手機(jī)嵌入式系統(tǒng)的研究與開(kāi)發(fā) The research and development of Google Android embedded system Computer Science Student: LI HAO Adviser: ZHOU QUN-biao Abstract With the popularity of mobile phones, “smart phone” become the subject of attention. Now days, there are lots of companies who compete in the filed “Smart Phone System”. In 2008, Google released their opening source smart phone operating system which called Android. Because of opening source and its nice UI. More and more mobile phone manufacturers use Android in their phones. With the becoming of 3G,Android may change the field of smart phones. Android compose of Linux kernel, middleware and core applications. To study Android, there something to do: firstly, Android system is a hierarchical set system, so we should study its hiberarchy, especially in Android Runtime layer and Android application framework layer; secondly through Android application development, we can further understand the Android the system, in development, we will use the Android Intent mechanism. Key Words Android; Android Kernel; Android Truss; Android Application; Android SDK;Android Development 本科畢業(yè)論文 Google Android 手機(jī)嵌入式系統(tǒng)的研究與開(kāi)發(fā) 目錄 1 緒論 . 1 1.1 智能手機(jī)平臺(tái) . 1 1.2 Android 平臺(tái)介紹 . 2 2 Android 的系統(tǒng)研究 . 4 2.1 Android 構(gòu)架 . 4 2.1.1 Android 的構(gòu)架綜述 . 4 2.1.2 內(nèi)核層 . 5 2.1.3 Android Runtime 和函數(shù)庫(kù)層 . 5 2.1.4 Dalvik 虛擬機(jī) . 7 2.1.5 Android 的進(jìn)程管理機(jī)制 . 10 2.1.6 應(yīng)用程序框架層 . 11 2.1.7 應(yīng)用程序?qū)?. 11 2.2 Android 的應(yīng)用 . 12 2.2.1 Android 應(yīng)用的組成 . 12 2.2.2 Activity . 12 2.2.3 Intent Receiver . 12 2.2.4 Service . 12 2.2.5 Content Provider . 13 2.2.6 AndroidManifest.xml . 13 2.3 Android 文件系統(tǒng) . 15 2.3.1 系統(tǒng)文件夾分析 . 15 2.3.2 系統(tǒng)構(gòu)架與系統(tǒng)文件的對(duì)應(yīng) . 16 3 Android 的開(kāi)發(fā) . 17 3.1 Android 開(kāi)發(fā)工具 . 17 3.2 Android 開(kāi)發(fā)平臺(tái)的搭建 . 17 3.3 簡(jiǎn)單短信功能軟件( miniSMS)的開(kāi)發(fā) . 17 3.3.1 miniSMS 工程建立及分析 . 18 3.3.2 AndroidManifest.xml 設(shè)計(jì) . 19 3.3.3 UI 設(shè)計(jì) . 20 3.3.4 短信發(fā)送功能的實(shí)現(xiàn) . 22 3.3.5 短信息的接收功能 . 24 3.3.6 虛擬機(jī)中運(yùn)行 . 28 總結(jié) . 29 參考文獻(xiàn) . 30 聲 明 . 31 致 謝 . 32 附錄 . 33 本科畢業(yè)論文 Google Android 手機(jī)嵌入式系統(tǒng)的研究與開(kāi)發(fā) 1 1 緒論 1.1 智能手機(jī)平臺(tái) 說(shuō)起手機(jī),沒(méi)有一個(gè)人會(huì)感到陌生。近 幾 年來(lái)一個(gè)名詞一直影響著 許許多多的手機(jī)用戶 ,它就 是智能手機(jī)。智能手機(jī)憑借其強(qiáng)大的功能吸引 住了 許多用戶的眼球, 因?yàn)橛辛藦V大的用戶基礎(chǔ),智能手機(jī)也風(fēng)靡一時(shí) 。說(shuō)起智能手機(jī),除了他有一顆強(qiáng)大的CPU 和其他一些較高配置的硬件外,其真正的智能還要?dú)w功于其不可缺少的智能操作系統(tǒng)。 當(dāng)今 ,智能手機(jī)所搭載的 智能手機(jī) 操作系統(tǒng)平臺(tái)大致如下: ( 1) Symbian OS。搭載在具有 廣泛群眾基礎(chǔ)的 Nokia 手機(jī)上 , 并 以此 占據(jù) 了智能手機(jī)的 半壁江山 ,其主要的智能平臺(tái)為 大部分諾基亞手機(jī)搭載的的 S60 系列和 索尼愛(ài)立信手機(jī)搭載的 UIQ 系列 ; ( 2) Windows Mobile。 Microsoft 在桌面系統(tǒng)獲得成功之后, 覬覦手機(jī)的巨大市場(chǎng)開(kāi)發(fā)的智能手機(jī)系統(tǒng),因其界面和桌面 windows 系統(tǒng)較為接近和其強(qiáng)大的微軟后臺(tái),成為 國(guó)內(nèi) 市場(chǎng) 占有率 緊跟 Symbian 之后成為國(guó)人比較喜歡的 操作系統(tǒng) ; ( 3) Mac OS X( iPhone OS)。蘋(píng)果 一直都是個(gè)性和時(shí)尚的代名詞 , 受廣大中高層次手機(jī)用戶的喜歡。 iPhone,以其酷炫的 UI 和獨(dú)特的操作方式,給傳統(tǒng)手機(jī)帶來(lái)一場(chǎng)革命,同時(shí)也 給 Symbian 和 Windows Mobile 帶來(lái)巨大沖擊的 ; ( 4) Blackberry。 以商務(wù)應(yīng)用為主,在國(guó)外尤其是歐美等地,受到商務(wù)人士歡迎的 Black Barry 占據(jù)了近一半的無(wú)線商務(wù)電子郵件業(yè)務(wù)市場(chǎng) , 就連美國(guó)總統(tǒng)奧巴馬也使用該品牌的手機(jī)。 但是在國(guó)內(nèi)還是受到一些 基礎(chǔ)設(shè)施的制約,所以在國(guó)內(nèi) 市場(chǎng) 不是太好 ; ( 5) Palm OS。 專(zhuān)門(mén)為 PDA 開(kāi)發(fā),一度占據(jù)了 90%的 PDA 市場(chǎng)的份額,雖然其并不專(zhuān)門(mén)針對(duì)于手機(jī)設(shè)計(jì),但是以其優(yōu)秀性和對(duì)移動(dòng)設(shè)備的支持同樣使其能夠成為一個(gè)優(yōu)秀的手機(jī)操作系統(tǒng) 。 ( 6) Linux。 對(duì)于 Linux 系統(tǒng),想必很多人都不會(huì)太陌生,桌面系統(tǒng)中 以其開(kāi)源的特性,贏得了不少用戶的喜愛(ài)。智能手機(jī)平臺(tái)的 Linux 同樣 具有源代碼開(kāi)放、軟件授權(quán)費(fèi)用低、應(yīng)用開(kāi)發(fā)人才資源豐富等優(yōu)點(diǎn),便于開(kāi)發(fā)個(gè)人和行業(yè)應(yīng)用。 但是 因?yàn)槠淦脚_(tái)上的應(yīng)用少而不被國(guó)人所接受 。 ( 7) Google Android。 自 2007 年推出, 2008 年第一 部 搭載 Android 系統(tǒng)的 G1上市至今不到短短三年時(shí)間,他已被許多人接受并且認(rèn)可及歡迎。 雖然如今的智能手機(jī)系統(tǒng)市場(chǎng)仍被 Symbian、 Windows Mobile 的占領(lǐng),但是 iPhone的革命以后,以及后起之秀 Android 的推出,在將來(lái),智能手機(jī)市場(chǎng)將發(fā)生翻天覆地的變化。 本科畢業(yè)論文 Google Android 手機(jī)嵌入式系統(tǒng)的研究與開(kāi)發(fā) 2 1.2 Android 平臺(tái)介紹 Android 從誕生到現(xiàn)在也不過(guò) 3 年的時(shí)間,但是也就是在這短短的 3 年內(nèi) Android創(chuàng)造了一個(gè)迅速被人們知曉并追捧的奇跡。 2007 年 11 月 5 日, Google 與其他 33 家手機(jī)制造商 (包含摩托羅拉、宏達(dá)電、三星、 LG)、手機(jī)晶片供應(yīng)商、軟硬體供應(yīng)商、電信業(yè)者所聯(lián)合組成的開(kāi)放手持裝置聯(lián)盟 (Open Handset Alliance),發(fā)布了名為Android 的開(kāi)放手機(jī)軟硬體平臺(tái)。 該 聯(lián)盟的成員宣布日后 都會(huì)在 Android 平臺(tái)上開(kāi)發(fā)他們的 新的業(yè)務(wù) 。 不久之后的 2008 年 9 月 24 日, T-Mobile 公司 首度公布第一臺(tái)Android 手機(jī) (G1)的細(xì)節(jié),同日 Google 也 放 出了 Android SDK 1.0 rc1。這樣 Android進(jìn)入了人們的視線。 Android 以其特有的開(kāi)放性?xún)?yōu)勢(shì)越來(lái)越受到人們和 智能 手機(jī)廠商的關(guān)注。 對(duì)于第三放軟件開(kāi)發(fā)商來(lái)說(shuō), Android 是一個(gè)真正意義上的開(kāi)放性移動(dòng)設(shè)備綜合平臺(tái), Android 系統(tǒng)是 免費(fèi)向開(kāi)發(fā)人員提供 的 , 這樣就避免了開(kāi)發(fā)中專(zhuān)利 權(quán) 的 障礙 。因此,就能夠?yàn)榈谌杰浖_(kāi)發(fā)商省下大筆資金 。 對(duì)于設(shè)備制造商來(lái)說(shuō), Android 是一個(gè)免費(fèi)的平臺(tái)。 當(dāng)設(shè)備制造商每制造一臺(tái)手機(jī)時(shí), 那些支付給手機(jī)系統(tǒng)制造商的費(fèi)用也省去了,這樣也降低了每臺(tái)手機(jī)的生產(chǎn)費(fèi)用,同時(shí)就降低了手機(jī)的價(jià)格,這樣在市場(chǎng)上也提高了競(jìng)爭(zhēng)力。 對(duì)硬體開(kāi)發(fā)廠商來(lái)說(shuō), Android 也是個(gè)開(kāi)放的平臺(tái)。 使用 Android 平臺(tái)的廠商可以更具自己的需求以及能力為 Android 開(kāi)發(fā)具有該廠商特色的功能,但是這樣的增加完全不用考慮版權(quán)的問(wèn)題。 同時(shí) Android 平臺(tái)支持 各種先進(jìn)的網(wǎng)絡(luò) 、繪圖、 3D 處理能力,可以用來(lái)提供更好的使用者體驗(yàn)。 Google Android 系統(tǒng)作為一個(gè)完全開(kāi)源的操作系統(tǒng),是由操作系統(tǒng) (Linux)、中間件以及核心應(yīng)用程序組成的軟件棧 (software stack)。通過(guò) android SDK 提供的 API 以及相應(yīng)的開(kāi)發(fā)工具 , 程序員可以 很方便的 開(kāi)發(fā) android 平臺(tái)上的應(yīng)用程序。其整個(gè)系統(tǒng)由應(yīng)用程序( Application),應(yīng)用程序框架( Application Framework),應(yīng)用程序庫(kù)( Libraries), Android 運(yùn)行庫(kù)( Android Runtime), Linux 內(nèi)核( Linux Kernel)五個(gè)部分組成。 Android 操作系統(tǒng)內(nèi)置了一部分應(yīng)用程序, 包括電子郵件客戶端、 SMS 程序、日歷、地圖、瀏覽器、通訊錄以及其他的程序, 值得一提的是這些所有的 程序都是用 java 編寫(xiě)的。 因?yàn)?應(yīng)用程序框架使得組件更易于重用 ,所以 開(kāi)發(fā)者的應(yīng)用程序可以 很容 易的調(diào)用 API 函數(shù)實(shí)現(xiàn)我們想要的功能 。在遵守應(yīng)用程序框架的安全機(jī)制約束的前提下, 開(kāi)發(fā)者開(kāi)發(fā)的 一個(gè)應(yīng)用程序可以使用其他程序所開(kāi)發(fā)的功能 。 雖然 Android 的應(yīng)用程序是用 Java 語(yǔ)言開(kāi)發(fā)的,但是 Android 給應(yīng)用程序開(kāi)發(fā)者 提供了一系列的 C/C+ 程序庫(kù) , 通過(guò) Android 的一些特殊的設(shè)計(jì) , 我們 開(kāi)發(fā)者可以使用這些庫(kù) ,這在后面的敘述中將看到。 本科畢業(yè)論文 Google Android 手機(jī)嵌入式系統(tǒng)的研究與開(kāi)發(fā) 3 現(xiàn)今, Android 操作系統(tǒng)已成為許多手機(jī)制造商的寵兒,其中包括 HTC、索尼愛(ài)立信、 Samsung、摩托羅拉以及國(guó)內(nèi)的聯(lián)想、華為、海爾、華禹等。其中值得一提的是摩托羅拉 公司, 就在 2009 年 11 月憑借 其 一款搭載 Android 平臺(tái)的 Droid 手機(jī),兩個(gè)月內(nèi)就突破百萬(wàn)臺(tái),擊敗了蘋(píng)果的 iPhone 3GS,被時(shí)代雜志評(píng)選為“年度最佳科技產(chǎn)品”。因此 告別了兩年多的低迷態(tài)勢(shì),走出了泥潭。 本科畢業(yè)論文 Google Android 手機(jī)嵌入式系統(tǒng)的研究與開(kāi)發(fā) 4 2 Android 的系統(tǒng)研究 2.1 Android 構(gòu)架 2.1.1 Android 的構(gòu)架 綜述 Android 是一個(gè)包括操作系統(tǒng),中間件以及一些重要應(yīng)用程序 的專(zhuān)門(mén)針對(duì)移動(dòng)設(shè)備的層次結(jié)構(gòu)的軟件集 1。作為一個(gè)層次結(jié)構(gòu)的軟件集 , 一定有一個(gè)層次的系統(tǒng)構(gòu)架 ,下圖為 Android 的 構(gòu)架圖 : 圖 2-1 Android 系統(tǒng)構(gòu)架 從圖 2-1 中明顯的可以看出 該系統(tǒng)從下到上 包括 Linux 內(nèi)核層 、 Libraries 和運(yùn)行時(shí)環(huán)境層 、 應(yīng)用程序框架層 、 應(yīng)用程序?qū)?四層結(jié)構(gòu) 。在 Android 的最下層的操作系統(tǒng)基于 Linux2.6 內(nèi)核,往上的中間件包括 Libraries 和運(yùn)行時(shí)環(huán)境層和應(yīng)用程序框架層兩個(gè)層次,最上層則是應(yīng)用程序?qū)印?在 Android 構(gòu)架中, 可以很明顯的看到, 底層的 Linux 內(nèi)核則采用 的是 C 語(yǔ)言,libraries 采用 C 或者 C+,但是 應(yīng)用程序?qū)?、?yīng)用程序框架層和 運(yùn)行時(shí)環(huán)境 中的Android 核心庫(kù)采用 Java 語(yǔ)言編寫(xiě), 也就是說(shuō) Android 雖然底層用的是 C 或者 C+但是應(yīng)用程序的開(kāi)發(fā)則用的是 Java。 Google 采用這樣的模式 可能 是因?yàn)橄鄬?duì)于 C 或者 C+, Java 的開(kāi)發(fā)周期更短 的緣故 ,這樣的話就能在短時(shí)間內(nèi)為 Android 提供大量本科畢業(yè)論文 Google Android 手機(jī)嵌入式系統(tǒng)的研究與開(kāi)發(fā) 5 的應(yīng)用軟件 。 我們知道,作為一個(gè)智能手機(jī)平臺(tái),只有擁有了大量的源源不斷的應(yīng)用程序作為支持, 才能受人們的歡迎,從而才能占領(lǐng)市場(chǎng)。之前 Nokia 的 s60 第三版就是一個(gè)很好的例子 ,因此 Nokia S60v3 的系統(tǒng)才被世人所熟知,并且曾經(jīng)在智能手機(jī)行業(yè)占有很大 的市場(chǎng) 。 而另一個(gè)例子就是 Linux 系統(tǒng),在所有操作系統(tǒng)中,穩(wěn)定性和性能上能夠和 Linux 抗衡的系統(tǒng)不多吧,但是在智能手機(jī)市場(chǎng)上為什么 Linux 卻可以說(shuō)是一敗涂地,其原因也和其第三方應(yīng)用少 是 脫不了關(guān)系的。 2.1.2 內(nèi)核層 Google Android 作為一個(gè)開(kāi)源的操作系統(tǒng)其內(nèi)核采用了同樣開(kāi)源的被業(yè)界認(rèn)為是 相當(dāng) 穩(wěn)定的 Linux 作為其內(nèi)核,其中 Linux 內(nèi)核包 括 以下 功能 模塊 :安全(Security)、存儲(chǔ)器管理 (Memory Management)、 進(jìn)程 管理 (Process Management)、網(wǎng)絡(luò)堆棧 (Network Stack)、驅(qū)動(dòng)程序模型 (Driver Model)等,另外也在 給其上層的軟件和下層 硬件間建立起一個(gè)抽象層 (Abstraction Layer)。 同時(shí) Android 在 Linux 2.6 的內(nèi)核上進(jìn)行了一些 增加和刪改,使 Linux 更加適應(yīng) ARM 平臺(tái)。 增加了一個(gè)基于 ARM 構(gòu)架的 GoldFish 平臺(tái)作為虛擬機(jī)的虛擬 CPU。 增加了 YAFFS2 FLASH 系統(tǒng)文件,因此增加了對(duì) NANDFLASH 支持。 增加了 Android 相關(guān)的驅(qū)動(dòng)。 例如 Android 的 IPC(進(jìn)程間通信機(jī)制) binder,使用這個(gè)能使運(yùn)行的進(jìn)程為其他 進(jìn)程提供服務(wù); Android 的日志系統(tǒng)( Logger)和內(nèi)存控制臺(tái)( Ram_console);同時(shí) Google 還重寫(xiě)了電源管理( Power) 增加了新的共享方式 Ashmem(匿名共享內(nèi)存),多個(gè)應(yīng)用程序可以這種方式共享內(nèi)存獲取信息 ,為進(jìn)程間提供大量共享內(nèi)存,同時(shí)為內(nèi)核提供回收和管理這個(gè)內(nèi)存的機(jī)制。 2.1.3 Android Runtime 和 函數(shù) 庫(kù)層 2.1.3.1 函數(shù) 庫(kù) Android 包含一些 C/C+庫(kù), Android 系統(tǒng)中的 各種 不同組件都能夠使用這些庫(kù)函數(shù)。這些庫(kù)函 數(shù)通過(guò) Android 應(yīng)用程序框架為開(kāi)發(fā)者提供服務(wù)。 以下列舉了一些庫(kù)函數(shù) 2: 系統(tǒng) C 庫(kù) -一個(gè)專(zhuān)門(mén)為 Embedded Linux 設(shè)備定制的從 BSD( Berkeley Software Distribution 伯克利軟件套件 )繼承來(lái)的標(biāo)準(zhǔn) C 系統(tǒng)函數(shù)庫(kù)。 媒體庫(kù) - 基于 PacketVideo 公司的 OpenCORE 開(kāi)發(fā)設(shè)計(jì)的 。 該庫(kù)支持 MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 多種常用的音頻、視頻格式 的 回放和錄制,同時(shí)支持靜態(tài)圖像文件。 Surface Manager - 對(duì)顯示子系統(tǒng)的管理,并且為多個(gè)應(yīng)用程序提 供了 2D 和3D 圖層的無(wú)縫融合 ,提供如同類(lèi)似 iPhone 的界面管理 功能 。 本科畢業(yè)論文 Google Android 手機(jī)嵌入式系統(tǒng)的研究與開(kāi)發(fā) 6 LibWebCore - 一個(gè)支持 Android 瀏覽器和一個(gè)可嵌入的 web 視圖 的最新的 web瀏覽器引擎 。 3D libraries - 基于 OpenGL ES 1.0 APIs 實(shí)現(xiàn) ;該庫(kù)可以使用硬件 3D 加速 (如果可用 )或者使用高度優(yōu)化的 3D 軟加速。 SQLite - 一個(gè)功能強(qiáng)勁的輕型關(guān)系型數(shù)據(jù)庫(kù)引擎 , Android 中所有應(yīng)用程序都可以調(diào)用它 。 FreeType -位圖 (bitmap)和矢量 (vector)字體顯示。 SGL - 底層的 2D 圖形引擎 。 2.1.3.2 Android Runtime 前面 說(shuō)到 Android 采用 Java 作為應(yīng)用程序的開(kāi)發(fā)語(yǔ)言,但是雖然使用的是 Java語(yǔ)言,但是 Google 卻沒(méi)使用 傳統(tǒng)的 Java Runtime 來(lái)執(zhí)行應(yīng)用程序 而是采用 Android自己特有的 Android Runtime。 從 Android 的 系統(tǒng) 構(gòu)架圖中可以清楚的看到, Android Runtime 由 Android 函數(shù)庫(kù) ( Android Libraries) 和 Dalvik 虛擬機(jī)組成 3。 Android 函數(shù)庫(kù) 中里包含了大部分 Java 程序語(yǔ)言所需要調(diào)用的 函數(shù)庫(kù),如 data structure, network, utilities, file system 等 ,其中很多代碼 是 源于 2005 年的Apache Harmony 項(xiàng)目。這樣 做 的 話 能夠使 Android 的虛擬機(jī)的類(lèi)庫(kù) 與 Java SE 的類(lèi)庫(kù)有非常大的相似性,進(jìn)而提高了 Java SE 類(lèi)庫(kù)的兼容性 , 最大限度的降低了一個(gè)程序員從 Java 平臺(tái)開(kāi)發(fā)到 Andorid 平臺(tái)開(kāi)發(fā)的難度,這樣就 降低了對(duì) Android 開(kāi)發(fā)的準(zhǔn)備時(shí)間 以及前期培訓(xùn)的費(fèi)用 ,從而降 低了 Android 應(yīng)用程序開(kāi)發(fā)的周期 以及開(kāi)發(fā)費(fèi)用 , 這樣的話 短時(shí)間內(nèi)就能讓 Google Android 系統(tǒng)能夠擁有大量的可執(zhí)行的應(yīng)用程序 。 另外,使用 Apache Harmony 類(lèi)庫(kù)還能完全擺脫 Sun的束縛而走上完全開(kāi)源的 Java之路,這樣也奉行了 Google 對(duì) Android 完全開(kāi)源的原則 。 我們知道, 對(duì)一個(gè)應(yīng)用程序而言 , 都 采用 一個(gè)屬于該應(yīng)用程序的進(jìn)程作為執(zhí)行的載體 ,同樣,對(duì)于 Android 也是,一個(gè)應(yīng)用程序也是有一個(gè)屬于它的進(jìn)程。 之前說(shuō)過(guò)Android 采用 Java 作為開(kāi)發(fā)語(yǔ)言,在進(jìn)程執(zhí)行時(shí)應(yīng)該會(huì)有一個(gè) Java 虛擬機(jī)來(lái)為進(jìn)程提供服務(wù)。在 Android 構(gòu)架圖中可以看到, 該系統(tǒng)采用的是一個(gè)叫做 Dalvik 的虛擬機(jī)。 在前面的研究中我們了解到 Dalvik 虛擬機(jī)是一個(gè) Java 虛擬機(jī),但是又和 Java虛擬機(jī)有所不同。 Dalvik 虛擬機(jī)和傳統(tǒng)的 Java 虛擬機(jī)所不同 之處 的是傳統(tǒng)的 Java虛擬機(jī)是 一個(gè)虛擬機(jī)來(lái)為不同應(yīng)用程序提供服務(wù),而 Google 自己開(kāi)發(fā)的 Dalvik 虛擬機(jī)則是每一個(gè) Android 應(yīng)用程序都擁有一個(gè)其自身的 Dalvik 虛擬機(jī),換句話說(shuō)就是專(zhuān)屬于每一個(gè)應(yīng)用程序?qū)?yīng)著一個(gè) Dalvik虛擬機(jī) 而這個(gè) Dalvik虛擬 機(jī) 相當(dāng)于一個(gè)執(zhí)行個(gè)體。有關(guān) Dalvik 虛擬機(jī)的內(nèi)容將在下一個(gè)部分詳細(xì)說(shuō)明。 Android函數(shù)庫(kù) 和 Dalvik虛擬機(jī)組成了 Android的運(yùn)行時(shí)環(huán)境。 從圖中可以看到,Android Runtime 和 Libraries 在同一層,建立在 Linux Kernel 層 之 上,與 Linux Kernel 沒(méi)有交集 ,而是直接嵌套到 libraries 中。 我們之前說(shuō)過(guò),我們開(kāi)發(fā)者可以本科畢業(yè)論文 Google Android 手機(jī)嵌入式系統(tǒng)的研究與開(kāi)發(fā) 7 調(diào)用 C 和 C+的一些類(lèi)庫(kù)。其實(shí)就是 這樣 Android Runtime 與 Libraries 在同一層的設(shè)計(jì)并同時(shí)讓 Android Runtime 中的 Android Libraries 引用 libraries 中的函數(shù),而通過(guò) Dalvik 虛擬機(jī)編譯以后再調(diào)用這些函數(shù) 做到上面所述的功能 。 也就是說(shuō)其實(shí) Android Libraries 中的函數(shù)只是 libraries 中的一些引用, 當(dāng)一個(gè)上層的應(yīng)用程序調(diào)用 Dalvik 虛擬機(jī)中的核心庫(kù)函數(shù)時(shí), 調(diào)用的其實(shí)只是一個(gè)函數(shù)名,并不是函數(shù)的具體實(shí)現(xiàn),然后 Dalvik 虛擬機(jī)對(duì)該函數(shù)進(jìn)行一些處理以后再通過(guò)Dalvik 虛擬機(jī)調(diào)用 libraries 中的相應(yīng)函數(shù),使之運(yùn)行。換句話說(shuō)就是, Android Libraries 中的只是 一個(gè)函數(shù)名,而真正代碼的實(shí)現(xiàn)是 libraries 中的 C 或者 C+代碼。這樣的好處就在于那些使用 Java 語(yǔ)言很難實(shí)現(xiàn) 但是在 C 或者 C+卻能很容易 實(shí)現(xiàn) 的功能也能通過(guò) Java 很容易等的實(shí)現(xiàn)。 2.1.4 Dalvik 虛擬機(jī) Dalvik 虛擬機(jī)是 Android Runtime 的一個(gè)組成部分,之所以要把他拿出來(lái)單獨(dú)進(jìn)行研究是因?yàn)椋?Dalvik 虛擬機(jī)作為一個(gè) Java 虛擬機(jī),但它和普通的 Java 虛擬機(jī) 有著一些不同。 Google 的工程師 結(jié)合傳統(tǒng)的 Java 虛擬機(jī) ,根據(jù) Android 使用的 平臺(tái) 一般為移動(dòng)終端設(shè)備這樣 一個(gè)特點(diǎn)重新設(shè)計(jì)的 虛擬機(jī),這個(gè)虛擬機(jī)在 移動(dòng)終端設(shè)備上 運(yùn)行效率上明顯比傳統(tǒng)的 Java 虛擬機(jī)要高 許多。 Dalvik 虛擬機(jī)對(duì)內(nèi)存的高效使用和在低速的 CPU 上表現(xiàn)出的高性能,確實(shí)讓人們刮目相看。 Android 的上層應(yīng)用程序雖然是用 Java 開(kāi)發(fā)的,但是 Dalvik 虛擬機(jī)卻和傳統(tǒng)的Java 虛擬機(jī)有著很大的區(qū)別,兩者是不兼容的。 首先 , 眾所周知 在 Java 中,所有的程序代碼會(huì)被編譯器編譯成字節(jié)碼( .class)應(yīng)用程序進(jìn)程 調(diào)用 Runtime 中Android 函數(shù)庫(kù)函數(shù) Android Libraries Android Runtime Dalvik 虛擬機(jī) 交給 Dalvik 虛擬機(jī)進(jìn)行處理 Libraries Dalvik 虛擬機(jī)調(diào)用 Libraries 中相應(yīng)函數(shù) 圖 2-2 應(yīng)用程序調(diào)用 Android Libraries 中函數(shù)的過(guò)程 本科畢業(yè)論文 Google Android 手機(jī)嵌入式系統(tǒng)的研究與開(kāi)發(fā) 8 文件,然后 再 打包成 JAR 文件, 在執(zhí)行時(shí) Java 虛擬機(jī) 就 從 JAR 文件中提取出相應(yīng)的字節(jié)碼文件 來(lái) 執(zhí)行。在 Android 中不再使用 字節(jié)碼文件而是一種 Android 所 特有的DEX( Dalvik EXecutable) 文件 。 DEX 文件的生成還是 需 要經(jīng)過(guò)生成字節(jié)碼 文件的 這個(gè)過(guò)程的。 使用 Java 語(yǔ)言編寫(xiě)好的 Android 程序代碼 , 同樣是 先 用 Java 編譯器 編譯成為字節(jié)碼文件 , 但是在這之后 還需通過(guò) Google 提供的一個(gè) DX 工具將 編譯好的 字節(jié)碼轉(zhuǎn)換成為 DEX 文件,然后 Dalvik 虛擬機(jī)通過(guò) DEX 文件獲得執(zhí)行的代碼。 Google 棄用字節(jié)碼文件而采用特有的 DEX 文件格式,這表明在 Android 實(shí)際運(yùn)行中 DEX 文件格式相對(duì)于字節(jié)碼文件格式 應(yīng)該有一些 獨(dú)特的優(yōu)勢(shì)。 在 Java 中 當(dāng)一個(gè)應(yīng)用程序定義了多個(gè)類(lèi)后,通過(guò)編譯則會(huì)產(chǎn)生相應(yīng)數(shù)目的 class 字節(jié)碼文件,在這些字節(jié)碼文件中則 必然會(huì)有 冗余信息, 例如一些相同的類(lèi)庫(kù)會(huì) 冗余等 。 而 DEX 文件格式則是把這些 class 字節(jié)碼文件整合到一個(gè) DEX 文件 中,使得字節(jié)碼中的冗余減少了 ,同時(shí) 使整體 文件 的 尺寸也減少了。 這樣一來(lái) , 對(duì)于同一個(gè)應(yīng)用程序來(lái)說(shuō) , 相對(duì)于 Java的字節(jié)碼文件 Android 的 DEX 文件格式 在 I/O 操作中所需要的 時(shí)間也減少了, 同時(shí)也減少了查找類(lèi)所需要 的時(shí)間 。另外 DEX 使用等長(zhǎng)的指令, 這樣的話能夠使得 DEX 文件盡量的 簡(jiǎn)潔, 從而 提高了解析速度。 通過(guò)上面的研究 可以看出 DEX 文件格式是 一種 專(zhuān)為 Dalvik 虛擬機(jī)設(shè)計(jì)的壓縮格式, 該格式的高性能很 適合內(nèi)存和處理器速度有限的平臺(tái),從中可以看出 Android 是定位于嵌入式平臺(tái)的一個(gè)操作系統(tǒng)。在這也體現(xiàn)出了Google 給 Android 所定義的發(fā)展以及戰(zhàn)略方向 ,如今移動(dòng)平臺(tái)的網(wǎng)絡(luò)應(yīng)用已經(jīng)成為當(dāng)前 移動(dòng)終端設(shè)備的發(fā)展方向,作為網(wǎng)絡(luò)搜索的龍頭大哥, Android 就是其打入該移動(dòng)平臺(tái)網(wǎng)絡(luò)應(yīng)用的利器。 Android 應(yīng)用開(kāi)發(fā)和 Dalvik 虛擬機(jī)同樣都使用 Java 開(kāi)發(fā) 語(yǔ)言 ,在應(yīng)用程序開(kāi)發(fā)好以后我們就需要將這個(gè)應(yīng)用發(fā)布到 Android 移動(dòng)終端設(shè)備 。 我們把 一個(gè) 開(kāi)發(fā)好的 應(yīng)用 的 Java 代碼經(jīng)過(guò)編譯以后生成 .class 的字節(jié)碼文件,通過(guò) Android 的 DX 工具轉(zhuǎn)換成 .DEX 格式的文件,最后使用 Android 的 appt 打包工具把 DEX 文件,源文件以及AndroidManifest.xml 文件組合成一個(gè) APK 應(yīng)用程序包,然后 就能 發(fā)布到 移動(dòng)終端設(shè)備 上了 。在 APK 應(yīng)用程序程序包發(fā)布到 移動(dòng)終端設(shè)備 后,應(yīng)用程序運(yùn)行前會(huì)對(duì)其中的DEX 文件進(jìn)行優(yōu)化,優(yōu)化后的文 件格式稱(chēng)之為 DEY, DEY 文件被保存到緩存區(qū)域,虛擬機(jī)會(huì) 在緩存中 執(zhí)行這些文件。 其次 ,傳統(tǒng)的 Java 虛擬機(jī)是采用的是基于棧的設(shè)計(jì),而 Dalvik 虛擬機(jī)則是基于寄存器設(shè)計(jì)的。 基于棧設(shè)計(jì)的虛擬機(jī)能夠使指令變得簡(jiǎn)單,不需要考慮程序中的源寄存器和目的寄存器,只需要開(kāi)辟??臻g而不需要為臨時(shí)變量再開(kāi)辟一個(gè)存儲(chǔ)空間。另外基于棧設(shè)計(jì)的虛擬機(jī)移植性比基于寄存器設(shè)計(jì)的虛擬機(jī)要高很多, 從組成原理和嵌入式操作系統(tǒng)課程中我們知道, 一般 的 32 位 x86 處理器的通用寄存器和 32 位的 ARM 的通用寄存器數(shù)目是不同的 。 虛擬機(jī) 的設(shè)計(jì)中 ,為了 執(zhí)行的效率,有時(shí) 會(huì)把這些寄存器一一映射本科畢業(yè)論文 Google Android 手機(jī)嵌入式系統(tǒng)的研究與開(kāi)發(fā) 9 到 物理寄存器上,但是由于平臺(tái)的不同,導(dǎo)致通用寄存器數(shù)量不同造成如果基于寄存器設(shè)計(jì)的虛擬機(jī)很難做到一一映射,執(zhí)行效率就會(huì)大打折扣。而用基于棧的設(shè)計(jì)的話,就不存在這種問(wèn)題,就很容易的分配寄存器。另外,基于棧設(shè)計(jì)的虛擬機(jī)采用的是零地址指令, 這樣的話指令形式比較緊湊。 雖然基于棧 結(jié)構(gòu) 的虛擬機(jī)有上述的一些優(yōu)點(diǎn),但是為什么 Google 不采用基于棧的設(shè)計(jì)而采用基于寄存器結(jié)構(gòu)設(shè)計(jì) Dalvik 虛擬機(jī)呢。 我個(gè)人覺(jué)得 這是和 Android 所搭載的平臺(tái)以及 Google 的戰(zhàn)略有關(guān)的。首先, Android 所搭載的主要平臺(tái)為移動(dòng)終端設(shè)備,如今的移動(dòng)終端設(shè)備雖然性能比過(guò)去好多了,但是還是無(wú)法擺脫 CPU 處理能力低于桌面 PC,存儲(chǔ)資源有限的限制,在這樣一個(gè)平臺(tái)上使用基于棧的設(shè)計(jì),在指令執(zhí)行時(shí)必定會(huì)多出一個(gè)進(jìn)棧 ( PUSH) 和出棧 ( POP) 的操作,那一定會(huì)影響指令執(zhí)行的效率,這也是為什么 我們?cè)谝恍┦謾C(jī)平臺(tái)上運(yùn)行 Java 程序時(shí)感到很慢的原因了 。其次 從 Google 對(duì) Dalvik 虛擬機(jī)設(shè)計(jì)中采用的 16 個(gè)通用寄存器中可以看出 Android的發(fā)展方向是基于 ARM 的硬件平臺(tái),這也和 Google 的戰(zhàn)略方向相一致。雖然移植性降低 了,但是使用二地址和三地址的指令,使得代碼執(zhí)行效率大大提高。 另外, Dalvik虛擬機(jī) 雖然 沒(méi)有采用現(xiàn)在 流行 虛擬機(jī)技術(shù)例如 JIT( just in time,及時(shí)編譯 )技術(shù),但是 Dalvik 虛擬機(jī)仍然是一個(gè)具有很高性能的虛擬機(jī) ,在這不得不說(shuō)一下, Dalvik虛擬機(jī)是一個(gè)設(shè)計(jì)相當(dāng)不錯(cuò)的虛擬機(jī)。 從 Dalvik 虛擬機(jī)的設(shè)計(jì)上我們可以看到Google 打算用 Android 系統(tǒng)來(lái)沖擊手機(jī) 移動(dòng)終端設(shè)備 ,想把其提供的服務(wù)擴(kuò)展到移動(dòng)設(shè)備上的戰(zhàn)略。 另外, Dalvik 虛擬機(jī)的設(shè)計(jì)方面也有其獨(dú)特的地方。它就是本著能夠并發(fā)執(zhí)行多個(gè)虛擬 機(jī)的設(shè)計(jì)思路來(lái)編寫(xiě)的。每一個(gè) Dalvik 虛擬機(jī)實(shí)例對(duì)應(yīng)于一個(gè)應(yīng)用程序,同時(shí)這個(gè)虛擬機(jī)實(shí)例還 都是一個(gè)進(jìn)程空間。換句話說(shuō)就是一個(gè)應(yīng)用對(duì)應(yīng)一個(gè) Dalvik 虛擬機(jī)同時(shí)對(duì)應(yīng)一個(gè)進(jìn)程 空間 。 不同的應(yīng)用程序在不同的 Dalvik 虛擬機(jī)實(shí)例中運(yùn)行,不同的 Dalvik 虛擬機(jī)又對(duì)應(yīng)于不同的進(jìn)程空間,加之不同的應(yīng)用程序在 Linux 內(nèi)核中以不同的 Linux 用戶來(lái)執(zhí)行,這樣可以最大限度的保證應(yīng)用程度的獨(dú)立性和安全性。 但 Dalvik 虛擬機(jī)要實(shí)現(xiàn)如線程機(jī)制,內(nèi)存的分配和管理等操作的話, 仍 然 需要底層操作系統(tǒng)的支持。另外 Dalvik 虛擬機(jī)線程機(jī) 制中的一個(gè)線程對(duì)應(yīng)于 Linux 中相應(yīng)的一個(gè)線程,這樣操作系統(tǒng)中的線程就能最大限度的為 Dalvik 虛擬機(jī)服務(wù)。 通過(guò)這樣的一個(gè)設(shè)計(jì), Android 的安全性大大提高了。 說(shuō)到 Dalvik 虛擬機(jī),那就應(yīng)該說(shuō)說(shuō)虛擬機(jī)中的一個(gè)特殊 的虛擬機(jī) 進(jìn)程 Zygote,之前說(shuō)過(guò) 一個(gè) Dalvik虛擬機(jī) 對(duì)應(yīng)一個(gè)進(jìn)程空間 。 Zygote進(jìn)程的功能有點(diǎn)類(lèi)似于 Linux中的 1 號(hào)進(jìn)程, 在 Linux 當(dāng)系統(tǒng)啟動(dòng)時(shí)即產(chǎn)生 1 號(hào)進(jìn)程,而其他的進(jìn)程都由 1 號(hào)進(jìn)程創(chuàng)建。在 Dalvik 虛擬機(jī)中 Zygote 進(jìn)程 fork 出所有的 虛擬機(jī) 進(jìn)程,每當(dāng)系統(tǒng)提出執(zhí)行一個(gè) Android 應(yīng)用時(shí), 需要一個(gè) Dalvik 虛擬機(jī)是, Zygote 就會(huì) fork 出一個(gè)子進(jìn)程來(lái)執(zhí)行該應(yīng)用。 使用它 可以加快系統(tǒng)的執(zhí)行,因?yàn)?Zygote 進(jìn)程在系統(tǒng)啟動(dòng)時(shí)就產(chǎn)本科畢業(yè)論文 Google Android 手機(jī)嵌入式系統(tǒng)的研究與開(kāi)發(fā) 10 生, 已經(jīng) 完成 了虛擬機(jī)的初始化,預(yù)置類(lèi)庫(kù)的加載和初始化等等操作。當(dāng)我們要執(zhí)行一個(gè)應(yīng)用而建立一個(gè)虛擬機(jī)時(shí) ,只需讓 Zygote 進(jìn)程自身復(fù)制,這樣就可以 減少虛擬機(jī)初始化等操作的時(shí)間。另外 ,對(duì)于一些只讀庫(kù)所有虛擬機(jī)實(shí)例都和 Zygote 進(jìn)程共享一塊內(nèi)存區(qū),這樣大大減少了對(duì)內(nèi)存的開(kāi)銷(xiāo)。 2.1.5 Android 的進(jìn)程 管理 機(jī)制 Android 雖然是基于 Linux, 但是它卻采用了一種有別于 Linux 的一種管理機(jī)制。Linux 在一個(gè)進(jìn)程活動(dòng)停止后就立刻結(jié)束該進(jìn)程, 而 Android 在一個(gè)進(jìn)程活動(dòng)停止后不會(huì)立刻結(jié)束該進(jìn)程, 并使該進(jìn)程常駐內(nèi)存中。 直到系統(tǒng)資源不夠 需要更多內(nèi)存 或者當(dāng)某個(gè)結(jié)束進(jìn)程的事件發(fā)生時(shí)才將該進(jìn)程結(jié)束。 在 Android 中進(jìn)程被分成了前臺(tái)進(jìn)程( foreground)、可見(jiàn)進(jìn)程( visible)、次要服務(wù)( secondary server)、后臺(tái)進(jìn)程( hidden)、內(nèi)容供應(yīng)節(jié)點(diǎn)( content provider)、空進(jìn)程( empty)六種。 前臺(tái)進(jìn)程是指 一些系統(tǒng)進(jìn)程和當(dāng)前屏幕上正在顯示的進(jìn)程。比如說(shuō)你打開(kāi)Google 地圖查找路線,此時(shí) Google 地圖就是一個(gè)前臺(tái)進(jìn)程。 可見(jiàn)進(jìn)程則是那些雖然不在前臺(tái),但是用戶依然可見(jiàn)的進(jìn)程,如輸入法,時(shí)鐘等,這些進(jìn)程 雖然 不 是 在前臺(tái)運(yùn)行 的,但是其存在和我們的使用卻是密切相關(guān)的,如果關(guān)閉了這些應(yīng)用程序?qū)⒔o我們的使用帶來(lái)非常大的不便 次要服務(wù)是一些與系統(tǒng)功能息息相關(guān)的服務(wù),如Google 企業(yè)套件等 。 后臺(tái)進(jìn)程, 可以這么說(shuō)后臺(tái)進(jìn)程就是一個(gè)前臺(tái)進(jìn)程被另一個(gè)前臺(tái)進(jìn)程替換后,進(jìn)程沒(méi)有結(jié)束,但是已經(jīng)不再是前臺(tái)進(jìn)程的一個(gè)狀態(tài)。在實(shí)際應(yīng)用中就是 當(dāng)一個(gè)前臺(tái)進(jìn)程運(yùn)行時(shí)按 HOME 鍵后的進(jìn)程狀態(tài) 內(nèi)容供應(yīng)節(jié)點(diǎn)是沒(méi)有程序?qū)嶓w,而是僅僅提供內(nèi)容給別的程序使用的比如說(shuō)日歷節(jié)點(diǎn)空進(jìn)程是沒(méi)有任何東西在運(yùn)行的進(jìn)程,在一個(gè)程序退出 后 會(huì)有一個(gè)沒(méi)有任何數(shù)據(jù)和代碼在運(yùn)行但是 依然駐留在進(jìn)程空間中 的進(jìn)程 , 該進(jìn)程 僅僅 是作為一個(gè)能夠提高該程序下次 啟動(dòng)速度和記錄程序歷史記錄的進(jìn)程。 Android 在調(diào)度以上幾種 進(jìn)程 時(shí)使用了一 個(gè) 系統(tǒng) 值作為系統(tǒng)對(duì)進(jìn)程的一個(gè)評(píng)估,當(dāng) 要結(jié)束 一個(gè)進(jìn)程 時(shí) 該值的數(shù)值 越大 的進(jìn)程被系統(tǒng)選中并結(jié)束的概率越大 。一般的,前臺(tái)進(jìn)程的值為 0,這表明前臺(tái)進(jìn)程不可能被系統(tǒng)選中并 結(jié)束。 當(dāng)進(jìn)程進(jìn)入后臺(tái)以后,系統(tǒng)將會(huì)分配一個(gè)更高的值給該進(jìn)程。 相對(duì)于 Linux 的最近最早未使用的調(diào)度策略 ,Android 在其基礎(chǔ)上提供了 一套獨(dú)特 的進(jìn)程管理模塊,他能讓程序員使用腳本來(lái)對(duì)內(nèi)存管理進(jìn)行定制。比如當(dāng) 內(nèi)存小于某個(gè)值時(shí)可以結(jié)束 這個(gè)系統(tǒng)值 大于另外一個(gè)值的進(jìn)程,還可以當(dāng)內(nèi)存小某個(gè)值時(shí)結(jié)束上面六類(lèi)進(jìn)程中的一類(lèi)(但順序必須是空進(jìn)程,內(nèi)容供應(yīng)節(jié)點(diǎn),后臺(tái)進(jìn)程,次要服務(wù),可見(jiàn)進(jìn)程,最后才是前臺(tái)進(jìn)程)。根據(jù)這種特性 該系統(tǒng) 值 至少由 兩部分組成,一個(gè)是基值, 另一個(gè) 根據(jù) LRU(最近最久未使用)調(diào)度算法產(chǎn)生的一個(gè)值。對(duì)于以上說(shuō) 的六種進(jìn)程應(yīng)該分別有一系統(tǒng)給其賦予的值,其大小本科畢業(yè)論文 Google Android 手機(jī)嵌入式系統(tǒng)的研究與開(kāi)發(fā) 11 順序應(yīng)該是空進(jìn)程大于內(nèi)容供應(yīng)節(jié)點(diǎn)大于后臺(tái)進(jìn)程大于次要服務(wù)大于可見(jiàn)進(jìn)程大于前臺(tái)進(jìn)程,而這個(gè)系統(tǒng)賦予的值則是基值。這樣就能保證一些這六種進(jìn)程總是當(dāng)一種進(jìn)程被結(jié)束完了以后另外一種進(jìn)程才會(huì)被結(jié)束,同時(shí)只需要根據(jù) 這個(gè)系統(tǒng) 值就能輕易做到對(duì)內(nèi)存管理的定制。 2.1.6 應(yīng)用程序框架層 在 Android 系統(tǒng)構(gòu)架圖中可以看到,應(yīng)用程序框架層是處于 Android Runtime 和庫(kù)函數(shù)層于應(yīng)用程序?qū)又g,之前的敘述中知道,該層使用開(kāi)發(fā)語(yǔ)言的是 Java 語(yǔ)言。應(yīng)用程序框架是能夠讓開(kāi)發(fā) 者完全訪問(wèn)核心應(yīng)用程序所使用的 API( Application Programming Interface,應(yīng)用程序編程接口),該框架能夠讓組件軟件重用的工做簡(jiǎn)單化。同時(shí)該框架中的任何一個(gè)功能模塊都是等價(jià)的,任何一個(gè)應(yīng)用程序都可以發(fā)布其功能模塊,該功能模塊可以替代當(dāng)前的任意一個(gè)功能模塊,但前提是必須遵循框架的安全限制 4 ,另外,其他的任意應(yīng)用程序能夠使用這個(gè)發(fā)布的功能模塊。 這樣的設(shè)計(jì)就使 Android 的構(gòu)件重用率提高了。 在每一個(gè)應(yīng)用程序背后,應(yīng)用程序框架為其提供了一系列的服務(wù)。這些服務(wù)包括:一個(gè)豐富并 且可擴(kuò)展的視圖,通過(guò)這個(gè)視圖我們可以 使用它提供的 一些包括按鈕、文本框、列表、網(wǎng)格 等 甚至可嵌入的 web 瀏覽器的應(yīng)用程序 來(lái)構(gòu)造我們的應(yīng)用程序 。內(nèi)容提供器( content providers),有了內(nèi)容提供器,一個(gè)應(yīng)用程序可以共享它自己的數(shù)據(jù)或者訪問(wèn)另外一個(gè)應(yīng)用程序中 共享 的數(shù)據(jù) 。資源管理器( resource manager),使用資源管理器,我們?cè)趹?yīng)用程序中能夠訪問(wèn)到一些如圖形、布局文件等一些非代碼資源。通知管理器( notification manager),給程序員提供了一個(gè)可以在程序狀態(tài)欄中顯示自定義提 示信息的管理器?;顒?dòng)管理器( activity manager),提供常用導(dǎo)航功能用來(lái)管理應(yīng)用程序生命周期的服務(wù)。 通過(guò)這些應(yīng)用程序框架層提供的服務(wù)程序員能夠方便的開(kāi)發(fā)一個(gè)界面優(yōu)秀功能強(qiáng)大易于共享的的應(yīng)用程序。 2.1.7 應(yīng)用程序?qū)?回到 Android 系統(tǒng)構(gòu)架圖中,應(yīng)用程序?qū)影?如 名片管理、 Google maps、瀏覽器等 本地應(yīng)用程序( native apps), 如 QQ、 MSN、 QuickOffice 等 第三方應(yīng)用程序( third part apps),以及 developer apps。 同樣,該層的應(yīng)用程序 也都使用 Java語(yǔ)言進(jìn)行開(kāi)發(fā)的。 本科畢業(yè)論文 Google Andr

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論