從多方面理解Android體系結構html
1.以分層的方式來看Androidandroid
安卓體系結構分爲四層。web
首先看一下官方關於Android體系結構的圖:數據庫
1)、Linux Kernel:負責硬件的驅動程序、網絡、電源、系統安全以及內存管理等功能。編程
2)、 Libraries和Android Runtime:Libraries:即C/C++函數庫部分,大多數都是開放源代碼的函數庫,例如WebKit,該函數庫負責Android網頁瀏覽器的運行,例如標準的C函數庫Libc、OpenSSL、SQLite等,固然也包括支持遊戲開發2D SGL和3D OpenGL | ES,在多媒體方面有MediaFramework框架來支持各類影音和圖形文件的播放與顯示,例如MPEG四、H.26四、MP三、AAC、AMR、JPG和PNG等衆多的多媒體文件格式。Android的Runtime負責解釋和執行生成的Dalvik格式的字節碼。設計模式
3)、Application Framework:(應用軟件架構),Java應用程序開發人員主要是使用該層封裝好的API進行快速開發。瀏覽器
4)、Applications:該層是Java的應用程序層,Android內置的Google Maps、E-mail、即時通訊工具、瀏覽器、MP3播放器等處於該層,Java開發人員開發的程序也處於該層,並且和內置的應用程序具備平等的位置,能夠調用內置的應用程序,也能夠替換內置的應用程序。安全
優勢:上面四個層次中,下層給上層服務,上層調用下層的服務,這種嚴格的分層機制,爲Android系統帶來很大的靈活性,穩定性和可擴展性。也利於不一樣層的開發人員專心於該層次的開發任務。網絡
2、以MVC模式來看Android結構架構
這裏仍是拿官方的一個圖來簡單說明一下Android系統中所蘊藏的MVC模式:
MVC的概念相信凡是作過軟件的人都會接觸到這個理念,即Model、View、Controller三層結構。
1)、模型(Model)對象:是應用程序的主體部分,全部的業務邏輯都應該寫在該層。
2)、視圖(View)對象:是應用程序中負責生成用戶界面的部分。也是在整個MVC架構中用戶惟一能夠看到的一層,接收用戶的輸入,顯示處理結果。注意這裏只簡單負責與用戶交互相關的任務。
3)、控制器(Control)對象:是根據用戶的輸入,控制用戶界面數據顯示及更新Model對象狀態的部分,控制器更重要的一種導航功能,想用用戶出發的相關事件,交給M哦得了處理。
在Android裏MVC模式體如今:
模型層(Model):對數據庫的操做、對網絡等的操做都應該在Model裏面處理,固然對業務計算等操做也是必須放在的該層的。
視圖層(View):通常採用XML文件進行界面的描述,使用的時候能夠很是方便的引入,(固然,如何你對Android瞭解的比較的多了話,就必定能夠想到在Android中也可使用JavaScript+HTML等的方式做爲View層,固然這裏須要進行Java和JavaScript之間的通訊,幸運的是,Android提供了它們之間很是方便的通訊實現。)
控制層(Controller):Android的控制層的任務主要是由衆多的Acitvity的實現,這句話也就暗含了不要在Acitivity中寫代碼,要經過Activity交給Model業務邏輯層處理,這樣作的另一個緣由是Android中的Acitivity的響應時間是5s,若是耗時的操做放在這裏,程序就很容易被回收掉
3、以常見的設計模式來理解Android
Android的應用開發是基於面向對象的JAVA語言,要想發揮面向對象的優點,免不了要使用常見的設計模式,Android系統在這點上也不例外,也不排除它在這方面會有過人之處,否則Android系統會那麼受歡迎。
經常使用的設計模式有:
1 * Template Method模式 2 * Factory Method模式 3 * Observer模式 4 * Abstract Factory模式 5 * Adapter模式 6 * Composite模式 7 * Strategy模式 8 * State模式 9 * Proxy模式 10 * Bridge模式 11 * Iterator模式 12 * Mediator模式 13 * Façade模式
若是有精力閱讀Android的源代碼,就會發現設計模式無處不在了,呵呵。
4、以IOC(控制反轉)的思想來理解Android
IOC控制反轉的另外一個名字就是依賴注入,簡單的說就是將對象、組件以及服務之間的依賴分離開,一般採用配置文件或回調的方式在開發時分離,使其相對獨立,在運行時由容器(這裏就是指Android的框架)來根據實際須要來將相關的依賴關係注入到相應的對象、組件中。
在Android中常見是例如Activity的經常使用函數Oncreate()方法,通俗地說就是你不用來找我,我會來找你的。在開發時對這個軟件層次更容易理解,專一於關鍵的幾個地方,大大提升了開發效率。
android體系架構
原文來源:http://www.cnblogs.com/vaiyanzi/archive/2010/05/15/1736280.html
android 平臺大的方面的層次能夠劃分紅三個層次,包括一個操做系統,中間件和應用程序,android 的系統框架圖以下:
圖中的軟件層次自上而下分紅4個層次
應用程序(Application)
用用程序框架(Application Framework)
各類類庫(Libraries)和android運行時(Adnorid Runtime)
操做系統(OS)
一.應用程序(Application)
應用層是和用戶交互的一個層次,用戶能夠看得見的一些應用,用戶能夠操做。這類應用基本都是經過Java語言編寫的獨立的可以完成某些功能的應用程序。Android自己提供了桌面(Home),聯繫人(Contacts),撥打電話(Phone),瀏覽器(Browers)等不少基本的應用程序。開發人員可使用應用框架提供的API編寫本身的應用程序,普通開發人員要作的事情就是開應用層的程序提供該廣大消費者使用。
二.應用程序框架(Application Framework)
普通開發者可使用Android基本應用程序使用的系統API,android 應用框架中的各個模塊均可以被複用,各類服務也能夠被複用,理解了這個機制,開發人員能夠更好的更輕鬆的開發出優秀的android應用。開發過程當中經常使用到的基本框架組件以下:
一組View(UI 組件),這些UI組件包括Button(按鈕),EidtView(文本框),TextView(標籤),List(列表)等等,靈活運用這些組件能夠快速方便的建立良好的用戶交互界面。
Content Providers(內容提供者),聽起來有點抽象,通俗的理解Content Provider 就是提供一種服務,經過這種服務應用程序之間能夠實現數據的互相訪問和共享,好比通信錄的存儲就使用了這種服務,其它應用也能夠訪問通信錄中存儲的聯繫人信息。
Resource Manager 顧名思義就是資源管理,android中的資源不少包括圖片,用戶界面(Layout xml),字體,顏色,UI組件的Id等等均可以稱之爲資源,這些豐富的資源,都是經過Resource Manager來統一進行管理。
Notification Manager(消息通知管理),它在不影響用戶正常操做和使用設備的時候在狀態欄上提供消息的提示。好比有短信來的時候,android自動會將這個消息提示在狀態欄上,用戶能夠及時的看到。
Activity Manager(活動管理),Activity管理着應用程序的生命週期,而且控制着應用的導航,扮演控制器的角色。每一個Activity相似於Windows應用中的一個wendow。通常的應用都是經過一個個Activity交互構成的。
Window Manager(窗口管理),管理全部啓動的窗口。
Location Manager(位置管理),用來管理地圖服務的相關功能。
Telephoney Manager(電話管理),用來管理有關的電話的相關功能。
Package Manager(包管理),管理全部的安裝在android系統內的應用程序。
三.庫(Libraries)和運行環境(RunTime)
這部份內容開始涉及底層,開發普通的應用不會直接對這個層進行操做。這層中包含了一組類庫(Libraries)和運行時(RunTime),系統C庫(libc),一個從BSD集成來的標準C系統函數庫(libc)它是專門爲基於嵌入式Linux的設備定製的。
媒體庫(Media Framework),基於PackeVideo OpenCore,該庫支持多種經常使用的音頻,視頻格式以及回放和錄製,同時支持靜態圖像文件。編碼格式包括:MPEG四、H.264,MP三、AAC、AMR、JPG、PNG。
Surface Manager 對顯示子系統的管理,而且爲多個應用提供2D,3D圖層的無縫融合。
WebKit,一個最新的web瀏覽器引擎,用來支持Andiroid瀏覽器或者嵌入的web視圖。
SGL 底層的2D圖形引擎。
OPENGL|ES,基於OpenGL ES 1.0 APIs實現,該庫可使用硬件3D加速或者使用高度優化的3D軟加速。
FreeType,位圖(bitmap)和適量(vector)字圖顯示支持。
SQLite,一個對全部應用程序可用,功能強大的輕量級關係型數據庫引擎。
Core Libraries 該核心庫提供了Java編程語言核心庫的大多數功能。
Dalvik VM, android平臺的一個虛擬機,它至關於PC中Java的虛擬機JVM。
4、操做系統(OS)
Android 的核心繫統服務依賴於Linux 2.6 內核,操做系統爲Android提供的服務包括:
安全性(Security)。
內存管理(Memory Management)
進程管理(Process Management)
網絡堆棧(Network Stack)
驅動程序模型(Driver Model)包含如下這些常規的驅動程序:
1 (1)Display Driver 2 (2)Keypad Driver 3 (3)Camera Driver 4 (4)WiFi Driver 5 (5)Flash Memory Driver 6 (6)Audio Driver 7 (7)Binder(IPC) Driver 8 (8)Power Management
對android的總體框架有必定的瞭解後對與理解android的一些機制和應用開發有很大的幫助,只有瞭解了android框架才能更好的使用android提供的功能和服務。從而使學習android應用開發少走彎路。