桥梁模式- WMS - 图1

WindowManagerService

桥梁模式- WMS - 图2

桥梁模式

整个WMS体系中的桥接模式
抽象部分:
Window和PhoneWindow构成窗口抽象部分,Window为该抽象部分的抽象接口,PhoneWindow为抽象部分的具体实现及拓展。
实现部分:
WindowManager为实现部分的接口基类继承自ViewManager,WindowManagerImpl为实现部分的具体逻辑实现,其使用WindowManagerGlobal通过IWindowManager接口与WindowManagerService交互,由WMS完成窗口管理,事件管理/事件分发。
桥梁部分:

  1. public abstract class Window {
  2. publick void setWindowManager(WindowManager wm,IBinder appToken,String appName,boolean hardwareAcelerated) {
  3. if (wm == null) {
  4. wm = (WindowManager)mContext.getSystemService(Context.WINDWO_SERVICE);
  5. }
  6. // WidnowManager与Window绑定
  7. mWindowManager = ((WindowManagerImpl)wm).createLocalWindowManager(this);
  8. }
  9. }

对Window(View)的addView,updateViewLayout,removeView的操作使用WindowManager。

桥梁模式- WMS - 图3

Binder

WindowManager与WindowManagerService通过Binder通讯。