Framework 定義了客戶端組件和服務端組件功能及接口。(包括:服務端、客戶端、Linux驅動)異步
服務端:函數
WindowManagerService(Wms):爲全部應用程序分配窗口和管理窗口。spa
ActivityManagerService(Ams):全部管理應用程序中的Activity。線程
消息處理類:對象
KeyQ:是Wms的內部類,繼承於KeyInputQueue類,KeyQ對象一旦建立,就當即啓動一個線程,該線程會不斷地讀取用戶的UI操做消息,好比按鍵、觸摸屏、trackball、鼠標等,並把這些消息放到一個消息隊列QueueEvent類中。繼承
InputDispatcherThread類:該類的對象一旦建立,也會當即啓動一個線程,該線程會不斷地從QueueEvent中取出用戶消息,並進行必定的過濾(用Wms中相應函數處理),過濾後,再將這些消息發給當前活動的客戶端程序中。接口
客戶端主要包括如下重要類:隊列
1)ActivityThread類:該類爲應用程序的主線程類,全部的Apk程序有且只有一個ActivityThread類,程序的入口爲該類中的static main()函數。進程
2)Activity類:該類爲APK程序的一個最小運行單元,一個APK程序中能夠包含多個Activity對象,ActivityThread主類會根據用戶操做選擇運行哪一個Activity對象。消息隊列
3)PhoneWindow類:該類繼承與Window類,同時,PhoneWindow類內部包含了一個DecorView對象。簡而言之,PhoneWindow是把一個FrameLayout進行了必定的包裝,並提供了一組通用的窗口操做接口。
4)Window類: 該類提供了一組通用的窗口(Window)操做API, 這裏的窗口僅僅是程序層面上的,Wms所管理的窗口並非Window類,而是一個View或者ViewGroup類,通常就是指DecorView類,即一個DecorView就是Wms全部管理的一個窗口。Window是一個abstract類型。
5)DecorView類:該類是一個FrameLayout的子類,而且是PhoneWindow中的一個內部類。Decor的英文是Decoration, 即「修飾」的意思,DecorView就是對普通的FrameLayout進行了必定的修飾,好比添加一個通用的TitleBar, 並響應特定的按鍵消息等。
6)ViewRoot類: Wms管理客戶端窗口時,須要通知客戶端進行某種操做,這些都是經過異步消息完成的,實現方式就是使用Handler, ViewRoot就是繼承於Handler,其做用主要是接收Wms的通知。
7)W類:該類繼承於Binder, 而且是ViewRoot的一個內部類。
8)WindowManager類:客戶端要申請建立一個窗口,而具體建立窗口的任務是由Wms完成的,WindowManager類就像是一個部門經理,誰有什麼需求就告訴它,由它和Wms進行交互,客戶端不能直接和Wms進行交互。
Linux驅動
Linux驅動和Framework相關的主要包含兩部分,分別是SurfaceFlingger(SF)和Binder。
每個窗口都對應一個Surface, SF驅動的做用是把各個Surface顯示在同一屏幕上。
Binder驅動的做用是提供跨進程(IPC)的消息傳遞機制。