Android Framework

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)的消息傳遞機制。

相關文章
相關標籤/搜索