Android四层架构
生活随笔
收集整理的這篇文章主要介紹了
Android四层架构
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Andrid系統(tǒng)的體系結(jié)構(gòu)設(shè)計為多層結(jié)構(gòu),這種結(jié)構(gòu)在給用戶提供安全保護的同時還保持了開放平臺的靈活性。如下圖所示:
Google官方提供的Android系統(tǒng)的四層架構(gòu)圖從上到下進行簡單介紹:
一、應(yīng)用層 Applications:應(yīng)用層由運行在Android設(shè)備上的所有應(yīng)用構(gòu)成,包括預(yù)裝的系統(tǒng)應(yīng)用和自己安裝的第三方應(yīng)用。大部分是由Java語言編寫并運行在Dalvik虛擬機中,另一部分應(yīng)用是通過c++/c語言編寫的本地應(yīng)用。但無論采用何種編程語言,兩類應(yīng)用運行的安全環(huán)境相同,都在應(yīng)用沙箱中運行。而程序員正是在這層中,通過Android提供的組件和API進行開發(fā),從而編寫出形形色色的app。
二、應(yīng)用框架層 Application Framework:集中體現(xiàn)Android系統(tǒng)系統(tǒng)的組件設(shè)計思想,是Android應(yīng)用開發(fā)的核心,為開發(fā)者開發(fā)應(yīng)用時提供基礎(chǔ)的API框架。框架層由多個系統(tǒng)服務(wù)組成。我們知道Android應(yīng)用是由若干個組件構(gòu)成,組件與組件之間的通信是通過框架層提供的服務(wù)集中調(diào)度和傳遞消息實現(xiàn)的,而不是組件之間直接進行的。
- View System 主要用于UI設(shè)計,包括List、Grid、Text、Button、Webview等。
- Activity Manager Service -AMS 負責管理應(yīng)用程序中的activity的生命周幾以及提供activity之間切換功能等 Intent相關(guān)。
- Windows Manager Service-WMS 用于管理所有的窗口程序,如Dialog、Toast等。
- Recource Manager 提供非代碼資源的管理 如布局文件、圖形、字符串資源文件等。
- Location Manager 負責與定位功能相關(guān)功能
- Content Providers 提供了一組通用的數(shù)據(jù)訪問接口,可用于應(yīng)用程序間的內(nèi)容交互,比如獲取手機聯(lián)系人數(shù)據(jù)等。
- Notification Manager 用戶管理手機狀態(tài)欄中的自定義信息等。
- Telephony Manager 手機底層功能管理模塊,可用于獲取手機串號或者調(diào)用短信功能
- Pacakage Manager Android系統(tǒng)內(nèi)的包管理模塊,負責管理安裝的應(yīng)用程序。
- XMPP Service 用于主持XMPP協(xié)議的服務(wù),比如與Google Talk通信等
三、類庫層:主要由類庫 Libraries 和Android運行時 Android Runtime 兩部分組成:
1.類庫 Libraries 由一系列的二進制動態(tài)庫構(gòu)成,大部分來源于優(yōu)秀的第三方類庫,另一部分是系統(tǒng)原生類庫,通常使用c/c++語言開發(fā)。(因為java代碼無法直接調(diào)用c/c++驅(qū)動代碼,所以在這一層,系統(tǒng)通過封裝了一系列的函數(shù)庫供上層使用.)以下列舉一些比較重要的類庫的功能,以供了解:
- Surface Manager: 負責管理顯示與存取操作間的互動,另外也負責將2D繪圖與3D繪圖進行顯示上的合成
- Media Framework: 一個開源的多媒體框架,允許我們創(chuàng)造出更高質(zhì)量與全新的播放器效果
- SQLite: 安卓自帶的數(shù)據(jù)庫,是一個嵌入式的數(shù)據(jù)庫
- OpenGL ES: 是 OpenGL 三維圖形 API 的子集,針對手機、PDA和游戲主機等嵌入式設(shè)備而設(shè)計。3D效果庫
- FreeType: 一個完全免費(開源)的、高質(zhì)量的且可移植的字體引擎。支持位圖、矢量、字體等
- SGL: 2D圖形引擎庫
- SSL: 位于TCP/IP協(xié)議與各種應(yīng)用層協(xié)議之間,為數(shù)據(jù)通信提供支持。是安全數(shù)據(jù)通信的支持。
- WebKit: 是一個開源的瀏覽器引擎。
- Libc: c層中最基本的函數(shù)庫
2.Android運行時 Android Runtime 是由Java核心類庫(Core Libraries)和Android虛擬機(Dalvik)共同構(gòu)成。
-
Java核心類庫包括框架層和應(yīng)用層所用到的基本Java庫。
-
Dalvik是為Android量身打造的Java虛擬機,它與標準Java虛擬機JVM的差別在于Dalvik是基于寄存器設(shè)計的,而JVM是基于棧結(jié)構(gòu)設(shè)計的;JVM通過解碼class文件(java編譯生成的的:.java---.class 的class文件)中的內(nèi)容來運行程序;而Dalvik運行時是由java字節(jié)碼文件進一步轉(zhuǎn)化而來的文件,,并被打包成一個DEX可執(zhí)行文件,Dalvik虛擬機通過解釋DEX文件來執(zhí)行這些字節(jié)碼 ,即android的class 文件實際上只是編譯過程中的中間目標文件,需要鏈接成dex 文件后才能在dalvik 上運行;Dalvik能夠更快的編譯較大的應(yīng)用程序,允許在有限的內(nèi)存空間中同時運行多個虛擬機的實例,每一個Dalvik應(yīng)用作為一個獨立的Linux進程執(zhí)行,這樣可以防止某一虛擬機崩潰時所有的應(yīng)用都被關(guān)閉。
四、系統(tǒng)內(nèi)核層 Linux Kernel
Android內(nèi)核具有和標準的Linux內(nèi)核一樣的功能,主要實現(xiàn)內(nèi)存管理、進程調(diào)度、進程間通信(Android增加了一種進程間的通信機制IPC Binder)、設(shè)備驅(qū)動(Display Driver: 顯示驅(qū)動;Camera Driver: 照相機驅(qū)動;Flash Memory Driver: 閃存驅(qū)動;Binder Driver: IPC通訊驅(qū)動;KeyPad Driver: 鍵映射驅(qū)動;Wifi Driver:Wifi驅(qū)動;Audio Driver:音頻驅(qū)動;Power Management:電量管理驅(qū)動)等
作者:芒果味的你呀
鏈接:https://www.jianshu.com/p/cf260703f8ff
來源:簡書
簡書著作權(quán)歸作者所有,任何形式的轉(zhuǎn)載都請聯(lián)系作者獲得授權(quán)并注明出處。
轉(zhuǎn)載于:https://www.cnblogs.com/yinrw/p/10694178.html
總結(jié)
以上是生活随笔為你收集整理的Android四层架构的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Java开发,月薪30k需要掌握哪些主流
- 下一篇: 【转】Matlab axis用法