Window、WindowManager、View 之間的關係

AlanKeene發表於2019-03-06
  1. Window 和 WindowManager 是什麼關係?
  2. Window 和 View 是什麼關係?
  3. WindowManager 和 View 是什麼關係?

Window 和 WindowManager 是什麼關係?

Widow 是個抽象類,在 Android 中所有的檢視都是通過 Window 來呈現的,包括 Activity、Dialog、Toast,它們的檢視實際上都是附加在 Window 上的。Window 的具體實現類是 PhoneWindow。而 WindowManager 是外界訪問 Window 的入口,WindowManager 和 WindowManagerService 之間通過 IPC 進行通訊,從而實現對 Window 的訪問和操作。

Window 和 View 是什麼關係?

Window 是 View 的承載者,而 View 是 Window 的體現者。兩者之間通過 ViewRootImpl 建立聯絡。

怎麼理解這句話呢?

Window 是 View 的承載者:Android 中的所有檢視都是附加在 Window 上呈現出來的 。

View 是 Window 的體現者:因為 Window 是個抽象的概念,並不實際存在,View 才是 Window 存在的實體。

而 ViewRootImpl 是用來建立 Window 和 View 之間的聯絡的,是兩者之間的紐帶。

WindowManager 和 View 是什麼關係?

WindowManager 是 View 的直接管理者,對 View 的新增、刪除、更新操作都是通過 WindowManager 來完成的,對應於 WindowManager 的 addViewremoveViewupdateViewLayout 三個方法。

也歡迎分享你的理解。

相關文章