Android 框架实现分析 - 窗口

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。 

流程

创建窗口

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fighting Horse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值