1. 程式人生 > >android的四層體系結構,基於mvc三層結構淺析

android的四層體系結構,基於mvc三層結構淺析

從多方面理解Android體系結構

1.以分層的方式來看Android

安卓體系結構分為四層。

首先看一下官方關於Android體系結構的圖:

1)、Linux Kernel:負責硬體的驅動程式、網路、電源、系統安全以及記憶體管理等功能。

2)、 Libraries和Android Runtime:Libraries:即C/C++函式庫部分,大多數都是開放原始碼的函式庫,例如WebKit,該函式庫負責Android網頁瀏覽器的執行,例如標準的C函式庫Libc、OpenSSL、SQLite等,當然也包括支援遊戲開發2D SGL和3D OpenGL | ES,在多媒體方面有MediaFramework框架來支援各種影音和圖形檔案的播放與顯示,例如MPEG4、H.264、MP3、AAC、AMR、JPG和PNG等眾多的多媒體檔案格式。Android的Runtime負責解釋和執行生成的Dalvik格式的位元組碼。

3)、Application Framework:(應用軟體架構),Java應用程式開發人員主要是使用該層封裝好的API進行快速開發。

4)、Applications:該層是Java的應用程式層,Android內建的Google Maps、E-mail、即時通訊工具、瀏覽器、MP3播放器等處於該層,Java開發人員開發的程式也處於該層,而且和內建的應用程式具有平等的位置,可以呼叫內建的應用程式,也可以替換內建的應用程式。

優點:上面四個層次中,下層給上層服務,上層呼叫下層的服務,這種嚴格的分層機制,為Android系統帶來很大的靈活性,穩定性和可擴充套件性。也利於不同層的開發人員專心於該層次的開發任務。

二、以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,如果耗時的操作放在這裡,程式就很容易被回收掉

三、以常見的設計模式來理解Android

Android的應用開發是基於面向物件的JAVA語言,要想發揮面向物件的優勢,免不了要使用常見的設計模式,Android系統在這點上也不例外,也不排除它在這方面會有過人之處,不然Android系統會那麼受歡迎。

常用的設計模式有:

[java] view plaincopyprint?
  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的原始碼,就會發現設計模式無處不在了,呵呵。

四、以IOC(控制反轉)的思想來理解Android

IOC控制反轉的另一個名字就是依賴注入,簡單的說就是將物件、元件以及服務之間的依賴分離開,通常採用配置檔案或回撥的方式在開發時分離,使其相對獨立,在執行時由容器(這裡就是指Android的框架)來根據實際需要來將相關的依賴關係注入到相應的物件、元件中。

在Android中常見是例如Activity的常用函式Oncreate()方法,通俗地說就是你不用來找我,我會來找你的。在開發時對這個軟體層次更容易理解,專注於關鍵的幾個地方,大大提高了開發效率。

android體系架構

android 平臺大的方面的層次可以劃分成三個層次,包括一個作業系統,中介軟體和應用程式,android 的系統框架圖如下:

圖中的軟體層次自上而下分成4個層次

應用程式(Application

用用程式框架(Application Framework

各種類庫(Libraries)和android執行時(Adnorid Runtime

作業系統(OS

.應用程式(Application

        應用層是和使用者互動的一個層次,使用者可以看得見的一些應用,使用者可以操作。這類應用基本都是通過Java語言編寫的獨立的能夠完成某些功能的應用程式。Android本身提供了桌面(Home),聯絡人(Contacts),撥打電話(Phone),瀏覽器(Browers)等很多基本的應用程式。開發人員可以使用應用框架提供的API編寫自己的應用程式,普通開發人員要做的事情就是開應用層的程式提供該廣大消費者使用。

.應用程式框架(Application Framework

       普通開發者可以使用Android基本應用程式使用的系統APIandroid 應用框架中的各個模組都可以被複用,各種服務也可以被複用,理解了這個機制,開發人員可以更好的更輕鬆的開發出優秀的android應用。開發過程中常用到的基本框架元件如下:

一組ViewUI 元件),這些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,該庫支援多種常用的音訊,視訊格式以及回放和錄製,同時支援靜態影象檔案。編碼格式包括:MPEG4H.264MP3AACAMRJPGPNG

Surface Manager 對顯示子系統的管理,並且為多個應用提供2D3D圖層的無縫融合。

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平臺的一個虛擬機器,它相當於PCJava的虛擬機器JVM

四、作業系統(OS

 Android 的核心繫統服務依賴於Linux 2.6 核心,作業系統為Android提供的服務包括:

安全性(Security)

記憶體管理(Memory Management)

程序管理(Process Management)

網路堆疊(Network Stack)

驅動程式模型(Driver Model)包含以下這些常規的驅動程式:

[java] view plaincopyprint?
  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應用開發少走彎路。