文/吳珊
Android的架構主要有兩部分構成,即系統架構與應用架構。Android系統架構,是Android系統的底層框架,其中包含了Android系統的基本運行原理,并且系統主要的開發工作也是在此基礎上完成的。Android應用框架,一種是開發默認支持MVC架構,另外一種是目前比較流行的MVP架構。
Android系統架構包括四個部分,如圖1所示,由下而上依次是:LINUX內核層、系統運行庫、應用程序框架層、應用程序層。每個層次之間的關系是:下層為上層提供服務;上層的實現需要調用下層的功能。
該層是基礎層,提供技術上的支撐,主要包括系統常用的驅動程序,例如顯示驅動、音頻驅動、電源管理等,能夠完成對基本功能的操作。該層連接硬件與軟件,可以降低軟件開發的復雜度,同時對硬件設備進行抽象。
該層包括程序庫和Android運行時環境,其中程序庫主要包括表面管理、多媒體框架,輕量級數據庫SQLite等,普遍使用的開發語言是C/C++,是應用開發必不可少的底層程序組件;Android運行時環境包括核心程序庫和Dalvik虛擬機,它的主要功能是為Android應用的運行提供環境支持。
該層是一個應用程序的核心,提供一些在開發過程中經常使用的應用程序接口,如活動管理(Activity Manager)、通知管理(Notification Manager)、電話管理(Telephony Manager)、資源管理(Resource Manager)以及內容提供器(Content Providers)等,在一個具體的Android應用中通過對這些接口的使用來豐富應用的功能,也可以通過繼承來實現個性化的功能擴展,并且優化應用的性能。
該層包括眾多的核心應用,例如聯系人應用、電話應用以及天氣應用等,通常使用JAVA語言編寫的程序,并且開發人員可以通過應用程序框架層的接口來開發新的應用。
在開發Android應用時首先應該設計應用框架,它的目的是使程序保持模塊化,達到高內聚、低耦合的,這樣有利于大型的Android應用開發,各個模塊可以進行分工合作,提高開發效率。Android應用通常采用MVC框架和MVP架構進行開發,本文主要對MVP架構進行研究。
在MVP架構中,其中M:模型層(Model)主要包括本地緩存訪問組件和網絡數據訪問組件;V:視圖層(View)主要由Activity、Fragment、Adapter這三個組件構成,主要功能是完成應用的頁面布局的設置;P:展示器層(Presenter),該層使用定制化的Presenter展示器作為基礎組件。
上述介紹的三層結構是MVP架構的主要組成部分,另外還包括一個契約層(Contract),契約層連接著視圖層和展示器層,它定義每個模塊中的視圖層和展示器層在使用時應該遵守的規則,使用契約層的組件中兩個接口,分別由視圖層和展示器層進行實現。
在視圖層中,主要使用Fragment來完成各個模塊界面的設計,同時還要遵守契約層中定義的規則,將定義的抽象方法實現,展示器層將調用這些方法來定義視圖層的數據展示方式。
MVP架構與MVC架構主要的區別在于,在MVC架構中,Activity既負責顯示視圖,又對數據進行處理操作,但在MVP架構中,Activity只負責實現Fragment與Presenter的顯示,并且負責將模型層組件顯示到展示器層。在Activity中間的協調下,Fragment與Presenter組件就能夠將視圖顯示,并能完成視圖層和模型層的交互。
Adapter,即適配器,主要使用在具有列表界面的模塊中,例如下列列表、列表視圖等等,Fragment中的方法獲取展示器層返回的列表數據以后,然后添加適配器,將這些數據添加到適配器中,由適配器控制這些數據在Fragment中列表控件中進行顯示在視圖中,同時Adapter可以監聽列表組件中每一個列表項的事件,當用戶點擊任意一個列表項就會觸發單擊事件,在相應的事件處理方法中實現操作。

圖1:Android系統架構圖
展示器層主要負責整個系統的業務邏輯,完成視圖層與模型層數據的交互。展示器層分擔了傳統MVC架構中Activity組件作為控制器層的主要職責,主要是為了防止Activity設計得過于繁瑣。通過封裝向外部提供訪問的接口,有利于單元測試和后期的維護工作。
模型層根據領域對象組織數據,每一個領域對象的模型層對應四部分,分別為:數據源規范、數據倉庫組件、本地緩存訪問組件、網絡數據訪問組件。其中數據倉庫組件、本地緩存訪問組件和網絡數據訪問均實現了數據源規范接口。
MVP架構可以使模型層和視圖層相對獨立,功能進行分離,交互行為都是由展示器層來完成的,最大的優點是便于單元測試,主要的功能是通過調用接口來完成的,內部的具體實現細節是不透明的,這樣方便編寫測試用例,有助于提高軟件的可維護性。