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