Java层
android.view

类型说明:
| 类名 | 说明 |
| ViewManager | 管理View的虚基类 |
| WindowManager | 对应一个Activity,管理其View,继承ViewManager |
| WindowManagerImpl | 实现WindowManager |
| WindowManagerGlobal | 进程单例,与窗口服务建立会话,本地代理 |
| IWindowManager | 窗口服务的接口定义 |
| ViewGroup. LayoutParams | |
| WindowManager. LayoutParams | 窗口布局参数 |
| View | 视图基类 |
| ViewParent | 视图容器,如ViewGroup、ViewRootImpl |
| ViewGroup | 父视图 |
| ViewRootImpl | 窗口,管理输入事件,调用会话接口使用窗口服务 |
| IWindow | 客户端接收窗口服务回调的接口定义 |
| ViewRootImpl.W | 实现IWindow,转发给ViewRootImpl处理 |
| WindowManagerPolicy | 窗口策略基类 |
| WindowManagerPolicy.WindowState | 窗口提供给窗口策略的信息接口 |
| WindowManagerPolicy.WindowManagerFuncs | 窗口服务的专供窗口策略调用的私有接口 |
com.android.services/window

外部相关类:
| 相关类 | 说明 |
| Watchdog.Monitor | |
| WindowManagerPolicy.WindowManagerFuncs | |
| DisplayManagerService.WindowManagerFuncs | |
| DisplayManager.DisplayListener | |
| InputManagerService | |
| DisplayManager | |
| SurfaceSession | |
| PowerManager | |
| ActivityManagerNative | |
| BatteryStatsService | |
| AppOpsManager | |
| DevicePolicyManager | |
| UiThread |
内部类:
| 类名 | 说明 |
| WindowAnimator | 单例,协助WindowManagerService管理动画状态和Surface操作 |
| Session | IWindowSession.Stub、IInputMethodClient、IInputContext、SurfaceSession、mNumWindow 将Client(IInputMethodClient)与InputMethodManager建立连接 管理IWindow,与Display、InputChannel绑定 |
| WindowState | 一个窗口状态 |
| WindowToken | 管理一组相关窗口,包装IBinder |
| WindowStateAnimator | 跟踪一个窗口(WindowState)的动画状态和Surface操作 |
| InputWindowHandle | |
| AppWindowToken | 继承WindowToken,一般与一个Activity对应,包装IApplicationToken,包含一个AppWindowAnimator,一个InputApplicationHandle |
| AppWindowAnimator | 应用的动画状态 |
| AppTransition | |
| InputApplicationHandle | 在输入模块(InputDispatcher)注册的句柄 |
| Task | |
| DisplaySettings | |
| PointerEventDispatcher | |
| KeyguardDisableHandler | |
| FocusedStackFrame |
WindowManagerService的成员:
| 名称 | 类型 | 说明 |
| mBroadcastReceiver | BroadcastReceiver | 处理DevicePolicyManager. ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED |
| mPolicy | WindowManagerPolicy | 由PolicyManager.makeNewWindowManager()创建 |
| mActivityManager | IActivityManager | |
| mBatteryStats | IBatteryStats | |
| mAppOps | AppOpsManager | |
| mDisplaySettings | DisplaySettings | |
| mSessions | HashSet<Session> | 所有活动会话,与客户端连接 |
| mWindowMap | HashMap<IBinder, WindowState> | IBinder实际是IWindow的Binder |
| mTokenMap | HashMap<IBinder, WindowToken> | IBinder实际是IApplicationToken等的Binder |
com.android.internal.policy
源代码位于:framework/base/core/java/com/android/internal/policy。
| 类名 | 说明 |
| PolicyManager | 窗口策略管理类,只有静态接口,负责构建策略窗口和策略,通过policy.impl.Policy实现 |
| IPolicy | 策略接口定义 |
com.android.internal.policy.impl
源代码位于:framework/base/policy/src/com/android/internal/policy/impl。
| 类名 | 说明 |
| Policy | 策略实现,PhoneWindow、PhoneLayoutInflater、 PhoneWindowManager、PhoneFallbackEventHandler |
| PhoneWindow | |
| PhoneLayoutInflater | |
| PhoneWindowManager | 手机特定窗口策略实现 |
| PhoneFallbackEventHandler | 手机特定输入事件处理器实现,处理一些特殊按键事件 |
SystemUI.apk
源代码位于:framework/base/packages/SystemUI。
流程
创建窗口
本文深入剖析了Android的窗口管理机制,从Java层的ViewManager到WindowManager,再到WindowManagerGlobal和IWindowManager接口,详细阐述了窗口布局参数、视图层次及窗口状态的管理。同时,介绍了与窗口策略、输入事件处理、会话管理和服务交互的相关类。整个流程涵盖了窗口的创建、动画处理和系统服务的交互,揭示了Android系统中窗口管理的复杂性和精细度。
250

被折叠的 条评论
为什么被折叠?



