Android Framework框架

Framework定義了客戶端組件和服務端組件功能及接口。包含3個主要部分:服務端,客戶端和Linux驅動。

Android <wbr>Framework框架

(一)服務端

    服務端主要包含兩個重要類,分別是WindowManagerService(Wms)和ActivityManagerService(Ams)。Wms的作用是爲所有的應用程序分配窗口,並管理這些窗口。包括分配窗口大小,調節各窗口的疊放次序,隱藏或顯示窗口。Ams的作用是管理所有應用程序中的Activity。

    除此之外,在服務端還包括2個消息處理類:

    1)KeyQ類:該類爲Wms的內部類,繼承於KeyInputQueue類, KeyQ對象一旦創建,就立即啓動一個線程,該線程會不斷地讀取用戶的UI操作消息,比如按鍵、觸摸屏、trackball、鼠標等,並把這些消息放到一個消息隊列QueueEvent類中。

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

發佈了38 篇原創文章 · 獲贊 14 · 訪問量 25萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章