—— 本文參照 Learn Java for Android Development (第三版)
Android Runtime
android的運行時環(huán)境是由系統(tǒng)庫和虛擬機組成的夷家,有關(guān)虛擬機和系統(tǒng)庫的故事就不講了讨跟。
每一個android app都是運行在一個系統(tǒng)進程里面的悔常,每個系統(tǒng)進程都是一個虛擬機實例单鹿。這個虛擬機在最開始設(shè)計的時候就有考慮到多虛擬設(shè)備的情況盏檐,所以不需要擔(dān)心效率問題。虛擬機的高效很大程度是基于虛擬機可以執(zhí)行DEX文件枷踏。DEX文件是一種被優(yōu)化成內(nèi)存占用最小的格式繁仁。
注意:不管app的什么部分啟動的時候android都會啟動一個進程,這個進程不再使用的時候才會被殺掉授账,或者其他進程需要占用系統(tǒng)資源的時候也會被殺掉矿酵。
也許大家會質(zhì)疑,如果沒有java虛擬機環(huán)境的話怎么去運行java代碼?好吧矗积,其實我們的虛擬機是不能運行java代碼的。事實是android會用dx工具把編譯好的java類文件轉(zhuǎn)換為dex文件敞咧,這樣虛擬機才會去執(zhí)行棘捣。
Linux Kernel
在framework下面的就是Linux kernel了,上面說的系統(tǒng)庫和運行時環(huán)境都市依賴于linux內(nèi)核的系統(tǒng)核心服務(wù)休建,比如:線程乍恐、低內(nèi)存管理、網(wǎng)絡(luò)協(xié)議棧测砂、進程管理茵烈、以及驅(qū)動。其實它最主要的作用就是軟件和硬件層之間的一個抽象砌些。
好吧呜投,以上對android系統(tǒng)的簡介就差不多了,如果想要了解更多與oncreate()等生命周期相關(guān)的東西就需要去查看附件的內(nèi)容了存璃。但是不管怎樣我們首先還是要先學(xué)java仑荐。
** 注意:**你是不是發(fā)現(xiàn)我們之前介紹的那些小程序有的定義了main函數(shù),但是有的沒有呢纵东?是的粘招,我們申明過main函數(shù)的那些都是java應(yīng)用程序,沒申明的是android應(yīng)用程序偎球,這兩個應(yīng)用程序的結(jié)構(gòu)是完全不一樣的洒扎,這里大家需要搞清楚辑甜。