freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于android的智能手機(jī)開發(fā)畢業(yè)設(shè)計(jì)(編輯修改稿)

2025-07-11 14:02 本頁面
 

【文章內(nèi)容簡(jiǎn)介】 件格式應(yīng)該有一些獨(dú)特的優(yōu)勢(shì)。在 Java 中 當(dāng)一個(gè)應(yīng)用程序定義了多個(gè)類后,通過編譯則會(huì)產(chǎn)生相應(yīng)數(shù)目的 class 字節(jié)碼文件,在這些字節(jié)碼文件中則必然會(huì)有冗余信息,例如一些相同的類庫會(huì)冗余等。而 DEX 文件格式則是把這些 class 字節(jié)碼文件整合到一個(gè) DEX 文件中,使得字節(jié)碼中的冗余減少了,同時(shí)使整體文件的尺寸也減少了。這樣一來,對(duì)于同一個(gè)應(yīng)用程序來說,相對(duì)于 Java的字節(jié)碼文件 Android 的 DEX 文件格式在 I/O 操作中所需要的時(shí)間也減少了,同時(shí)也減少了查找類所需要的時(shí)間。另外 DEX 使用等長(zhǎng)的指令,這樣的話能夠使得 DEX 文件盡量的簡(jiǎn)潔,從而提高了解析速度。 通過上面的研究可以看出 DEX文件格式是一種專為 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)用開發(fā)和 Dalvik 虛擬機(jī)同樣都使用 Java 開發(fā)語言,在應(yīng)用程序開發(fā)好以后我們就需要將這個(gè)應(yīng)用發(fā)布到 Android 移動(dòng)終端設(shè)備。我們把一個(gè)開發(fā)好的應(yīng)用的 Java代碼經(jīng)過編譯以后生成 .class的字節(jié)碼文件,通過 Android 的 DX工具轉(zhuǎn)換成 .DEX格式的文件,最后使用 Android 的appt 打包工具把 DEX 文件,源文件以及 文件組合成一個(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)化后的文件格式稱之為 DEY, DEY 文件被保存到緩存區(qū)域,虛擬機(jī)會(huì)在緩存中執(zhí)行這些文件。 其次,傳統(tǒng) 的 Java 虛擬機(jī)是采用的是基于棧的設(shè)計(jì),而 Dalvik 虛擬機(jī)則是基于寄存器設(shè)計(jì)的。 基于棧設(shè)計(jì)的虛擬機(jī)能夠使指令變得簡(jiǎn)單,不需要考慮程序中的源寄存器和目的寄存器,只需要開辟棧空間而不需要為臨時(shí)變量再開辟一個(gè)存儲(chǔ)空間。另外基于棧設(shè)計(jì)的虛擬機(jī)移植性比基于寄存器設(shè)計(jì)的虛擬機(jī)要高很多,從組成原理和嵌入式操作系統(tǒng)課程中我們知道,一般的 32 位 x86處理器的通用寄存器和 32位的 ARM 的通用寄存器數(shù)目是不同的。虛擬機(jī)的設(shè)計(jì)中,為了執(zhí)行的效率,有時(shí)會(huì)把這些寄存器一一映射到物理寄存器上,但是由于平臺(tái)的不同,導(dǎo)致通用寄存器數(shù)量 不同造成如果基于寄存器設(shè)計(jì)的虛擬機(jī)很難做到一一映射,執(zhí)行效率就會(huì)大打折扣。而用基于棧的設(shè)計(jì)的話,就不存在這種問題,就很容易的分配寄存器。另外,基于棧設(shè)計(jì)的虛擬機(jī)采用的是零地址指令,這樣的話指令形式比較緊湊。 雖然基于棧結(jié)構(gòu)的虛擬機(jī)有上述的一些優(yōu)點(diǎn),但是為什么 Google 不采用基于棧的設(shè)計(jì)而采用基于寄存器結(jié)構(gòu)設(shè)計(jì) Dalvik 虛擬機(jī)呢。我個(gè)人覺得這是和 Android 所搭載的平臺(tái)以及 Google 的戰(zhàn)略有關(guān)的。首先, Android所搭載的主要平臺(tái)為移動(dòng)終端設(shè)備,如今的移動(dòng)終端設(shè)備雖然性能比過去好多了,但是還是無法擺 脫 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ī)雖然沒有 采用現(xiàn)在流行虛擬機(jī)技術(shù)例如 JIT( just in time,及時(shí)編譯)技術(shù),但是 Dalvik 虛擬機(jī)仍然是一個(gè)具有很高性能的虛擬機(jī),在這不得不說一下, Dalvik 虛擬機(jī)是一個(gè)設(shè)計(jì)相當(dāng)不錯(cuò)的虛擬機(jī)。從 Dalvik 虛擬機(jī)的設(shè)計(jì)上我們可以看到 Google 打算用 Android 系統(tǒng)來沖擊手機(jī)移動(dòng)終端設(shè)備,想把其提供的服務(wù)擴(kuò)展到移動(dòng)設(shè)備上的戰(zhàn)略。 另外, Dalvik 虛擬機(jī)的設(shè)計(jì)方面也有其獨(dú)特的地方。它就是本著能夠并發(fā)執(zhí)行多個(gè)虛擬機(jī)的設(shè)計(jì)思路來編寫的。每一個(gè) Dalvik 虛擬機(jī)實(shí)例對(duì)應(yīng)于一個(gè)應(yīng)用程序,同時(shí)這個(gè)虛擬機(jī)實(shí)例還都 是一個(gè)進(jìn)程空間。換句話說就是一個(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 用戶來執(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ù)。通過這樣的一個(gè)設(shè)計(jì), Android 的安全性大大提高了。 說到 Dalvik 虛擬機(jī),那就應(yīng)該說說虛擬機(jī)中的一個(gè)特殊的虛擬機(jī)進(jìn)程 Zygote,之前說過一個(gè) Dalvik 虛擬機(jī)對(duì)應(yīng)一個(gè)進(jìn)程空間。 Zygote 進(jìn)程的功能有點(diǎn)類似于 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)程來執(zhí)行該應(yīng) 用。使用它可以加快系統(tǒng)的執(zhí)行,因?yàn)?Zygote 進(jìn)程在系統(tǒng)啟動(dòng)時(shí)就產(chǎn)生,已經(jīng)完成了虛擬機(jī)的初始化,預(yù)置類庫的加載和初始化等等操作。當(dāng)我們要執(zhí)行一個(gè)應(yīng)用而建立一個(gè)虛擬機(jī)時(shí),只需讓 Zygote 進(jìn)程自身復(fù)制,這樣就可 以減少虛擬機(jī)初始化等操作的時(shí)間。另外,對(duì)于一些只讀庫所有虛擬機(jī)實(shí)例都和 Zygote 進(jìn)程共享一塊內(nèi)存區(qū),這樣大大減少了對(duì)內(nèi)存的開銷。 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)、可見進(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)程。比如說你打開 Google 地圖查找路線,此時(shí) Google 地圖就是一個(gè)前臺(tái)進(jìn)程。⑵可見進(jìn)程則是那些雖然不在前臺(tái),但是用戶依然可見的進(jìn)程,如輸入法,時(shí)鐘等,這些進(jìn)程雖然不是在前臺(tái)運(yùn)行的,但是其存在和我們的使用卻是密切相關(guān)的,如果關(guān)閉了這些應(yīng)用程序?qū)⒔o我們的使用帶來非常大的不便⑶次要服務(wù)是一些與系統(tǒng)功能息息相關(guān)的服務(wù),如 Google 企業(yè)套件等。⑷后臺(tái)進(jìn)程,可以這么說后臺(tái)進(jìn)程就是一個(gè)前臺(tái)進(jìn)程被另一個(gè)前臺(tái)進(jìn)程替換后,進(jìn)程沒有結(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)是沒有程序?qū)嶓w,而是僅僅提供內(nèi)容給別的程序使用的比如說日歷節(jié)點(diǎn)⑹空進(jìn)程是沒有任何東西在運(yùn)行的進(jìn)程,在一個(gè)程序退出后會(huì)有一個(gè)沒有任何數(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)程管理模塊,他能讓程序員使用腳本來對(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é)束上面六類進(jìn)程中的一類(但順序必須是空進(jìn)程,內(nèi)容供應(yīng)節(jié)點(diǎn),后臺(tái)進(jìn)程,次要服務(wù),可見進(jìn)程,最后才是前臺(tái)進(jìn)程)。根據(jù)這種特性 該系統(tǒng)值至少由兩部分組成,一個(gè)是基值,另一個(gè)根據(jù) LRU(最近最久未 使用)調(diào)度算法產(chǎn)生的一個(gè)值。對(duì)于以上說的六種進(jìn)程應(yīng)該分別有一系統(tǒng)給其賦予的值,其大小順序應(yīng)該是空進(jìn)程大于內(nèi)容供應(yīng)節(jié)點(diǎn)大于后臺(tái)進(jìn)程大于次要服務(wù)大于可見進(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)存管理的定制。 應(yīng)用程序框架層 在 Android 系統(tǒng)構(gòu)架圖中可以看到,應(yīng)用程序框架層是處于 Android Runtime 和庫函數(shù)層于應(yīng)用程序?qū)又g,之前的敘述中知道,該層使用開發(fā)語言的 是 Java語言。應(yīng)用程序框架是能夠讓開發(fā)者完全訪問核心應(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ò)展的視圖,通過這個(gè)視圖我們可以使用
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號(hào)-1