Android的窗口管理是C/S模式的。Android中的Window是表示Top Level等頂級窗口的概念。DecorView是Window的Top-Level View,這個View我稱之為主View,DecorView會缺省的attach到Activity的主窗口中。主View被加入到WindowManager中,WM使用WindowState與這個主View對應。

Activity建立一個主窗口后,在將主窗口添加到WindowManager時,首先要建立WindowManager代理對象,并打開一個會話(實現IWindowSession AIDL接口),并維持該會話。Activity將通過該會話與WindowManager建立聯系,這個Session是C/S體系的基礎,Client通過WindowSession將window加入到Window Manager中。一個完整的窗口概念橫跨了View,ViewRoot,WindowManager Service。Window,DecorView,View,IWindow ,ISession,WindowState之間的關系如下:

客戶端的Activity通過Session會話與WindowManager建立對話,而WindowManager則通過IWindow接口訪問Client,將消息傳遞到Client端,通過消息分發渠道,將消息傳遞到處理函數OnXXX。