For investors
股價:
5.36 美元 %For investors
股價:
5.36 美元 %認(rèn)真做教育 專心促就業(yè)
提及“android架構(gòu)設(shè)計,android架構(gòu)圖”,先從谷歌公開的體系結(jié)構(gòu)圖上開始吧,本著拿來主義的原則,直接貼圖。開始就從了解體系架構(gòu)入手吧。
從圖上可以看出一共有四層結(jié)構(gòu),從下到上分別為:
1-----Linux 內(nèi)核層
2-----中間件層
3-----應(yīng)用程序框架層
4-----應(yīng)用程序?qū)?
谷歌公開的體系結(jié)構(gòu)圖
下面咱們依次分層細(xì)談吧,先把模塊打散,然后再組裝吧,自己畫的,雖然丑點吧,畢竟是自己的,ok,就這樣了,這玩意也沒有必要,也不必過下美圖秀秀。
一、系統(tǒng)分層架構(gòu)圖,簡化版的
二、Linux內(nèi)核層
1--------------------
從下到上來吧,Android 核心內(nèi)核使用了Linux 2.6的內(nèi)核,為了便于商用,那幫家伙將Linux中的GUN協(xié)議部分進(jìn)行取代。里面集成了調(diào)用實體設(shè)備的驅(qū)動程序,用來驅(qū)動真實實體設(shè)備。并暴漏接口調(diào)用給上一層,即中間件層。
三、中間件層
2--------------------
中間件層--從體系架構(gòu)圖中可以看出,該層主要的功能分成了兩塊:運行庫和運行時。并封裝了相應(yīng)的接口調(diào)用給應(yīng)用程序框架層
=================運行庫
系統(tǒng)運行庫層:當(dāng)我們使用Android應(yīng)用框架時,Android系統(tǒng)會通過一些C/C++庫,來支持對我們使用的各個組件,使其能更好滴為開發(fā)者服務(wù),比如里面列舉一些主要的庫:
①---Bionic系統(tǒng)C庫-----C語言標(biāo)準(zhǔn)庫,系統(tǒng)最底層的庫,C庫通過Linux系統(tǒng)來調(diào)用;
②---多媒體庫(MedioFrameword)-----Android系統(tǒng)多媒體庫,基于PacketVideo OpenCORE,該庫支持多種常用的音頻、視頻格式的回放和錄制以及一些圖片,比如:MPEG4、MP3、AAC、AMR、JPG、PNG等
③---SGL-----2D圖形引擎庫
④---SSL-----位于TVP/IP協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通訊提供支持。
⑤---OpenGL | ES -----3D效果的支持
⑥---SQLite-----輕量級關(guān)系型數(shù)據(jù)庫
⑦---Webkit-----Web瀏覽器引擎
⑧---FreeType-----位圖(Bitmap) 及 矢量(Vector)
===============運行時
運行時里面最重要的應(yīng)該算是虛擬機(jī)吧。Dalvik是google自己設(shè)計的用于Android平臺的Java虛擬機(jī)(.dex格式是專為Dalvik設(shè)計的一種壓縮格式,適合內(nèi)存和處理器速度有限的系統(tǒng))這是在android4.4之前的版本了。android 4.4及以后的版本,谷歌直接祭出了ART(Android Runtime),用來取代Dalvik,運行模式確實提高了不少,優(yōu)化了性能和流暢性。
比較一下二者的不同吧:
------Dalvik:應(yīng)用每次運行的時候,字節(jié)碼都需要通過即時編譯器轉(zhuǎn)換為機(jī)器碼,這會拖累應(yīng)用的運行效率。
------ART:應(yīng)用在第一次安裝的時候,字節(jié)碼就會預(yù)先編譯成機(jī)器碼,使其成為真正的本地應(yīng)用(這個過程叫做預(yù)編譯[AOT,Ahead-Of-Time]),這樣的話,應(yīng)用的啟動(首次)和執(zhí)行都會變得更加快速。
反正就是ART比Dalvik強(qiáng)就是了。
四、應(yīng)用框架層
3--------------------
應(yīng)用程序框架層---封裝了開發(fā)應(yīng)用所需要的核心API框架,提供了豐富多彩的組件,這樣簡化了程序開發(fā)的架構(gòu)設(shè)計,但也必須遵守其框架的開發(fā)原則,開發(fā)自主性上被限制住了。該層封裝了SDK,提供了API給上一層調(diào)用使用。
SDK中內(nèi)置了一些對象,其中最重要的組件有四個:Activities、Intents、Services以及Content Providers。
1--------------
Activities 活動:
一個活動就是一個用戶界面。一個應(yīng)用程序可以定義一個或者多個活動,每個活動都能夠保存和恢復(fù)自身的狀態(tài)。
2--------------
Intents 意向:
Intent是描述一個特定活動的一種機(jī)制,比如“選取照片”、“撥打電話”等具體的動作。在Android機(jī)制中所有的東西都是通過Intents完成的,這樣開發(fā)者有機(jī)會替代或重用大量的組件。
比如有一個“發(fā)送郵件”的Intent,當(dāng)你應(yīng)用程序需要發(fā)送郵件時可以激活這個Intent。開發(fā)者甚至可以重新編寫一個新的郵件應(yīng)用程序,并注冊為活動以處理這個Intent代替標(biāo)準(zhǔn)的郵件應(yīng)用程序。
那么,其他的應(yīng)用程序就可以使用新編寫應(yīng)用程序來發(fā)送郵件了。
3--------------
Services 服務(wù):
一個服務(wù)Service就是運行在后臺,沒有用戶直接交互的任務(wù)(與Unix daemon類似)。
比如要做一個音樂播放器,可能會被另一個活動激活,但音樂是需要作為背景音樂播放,那么這種程序就可以考慮作為一種服務(wù)Service。然后別的活動可以來操作這個播放器。Android中內(nèi)置了很多服務(wù),可以方便滴使用API進(jìn)行訪問。
4--------------
Content Providers 內(nèi)容提供者:
一個內(nèi)容提供者content provider就是由自定義的API封裝讀寫操作的一套數(shù)據(jù)。Content Provider是不同應(yīng)用程序之間共享全局?jǐn)?shù)據(jù)最好的方式。比如,Google提供了聯(lián)系人的Content Provider,包括姓名、地址、電話等所有信息在內(nèi)的聯(lián)系方式能夠被所有應(yīng)用程序使用。
五、應(yīng)用程序
4--------------------
應(yīng)用程序?qū)樱_發(fā)豐富多彩的應(yīng)用程序。
先總結(jié)成這個樣子吧,自己也是初學(xué),慢慢加深理解吧!
【免責(zé)聲明】本文部分系轉(zhuǎn)載,轉(zhuǎn)載目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點和對其真實性負(fù)責(zé)。如涉及作品內(nèi)容、版權(quán)和其它問題,請在30日內(nèi)與聯(lián)系我們,我們會予以更改或刪除相關(guān)文章,以保證您的權(quán)益!