Window、WindowManager、View 之间的关系

如果问你这三个问题,你的理解是什么呢。

  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 三个方法。

让我们来一场点赞之交?
0%