window的添加過程: a. 檢驗參數(shù)是否合法 b. 創(chuàng)建ViewRootImpl,并將view添加到列表中 c. 通過ViewRootImpl來根系界面并完成window的添加過程 ViewRootImpl.setView 其實是view的繪制過程,setview中通過requestLayout異步繪制 requestlayout調(diào)用scheduleTraversals(view繪制的入口) d. windowSession【實際上是一個Binder】 IPC完成window的添加過程。其內(nèi)部調(diào)用WindowManagerService實現(xiàn)添加window.
體現(xiàn)的設計模式 a. add remove,update等操作 是 windowManager的實現(xiàn)類windowManagerImpl中交由windowManagerGlobal處理,后者以工廠的方式提供實例。 b. windowManagerImpl體現(xiàn)了橋接模式,所有操作委托給WindowManagerImpl實現(xiàn)。