window,windowManager --《android 艺术探索读书》笔记

332 阅读1分钟

window windowManager

  1. windowManager 与windowManagerService的交互式一个IPC过程
  2. Android所有视图都是通过window呈现
  3. window 抽象类,具体实现是PhoneWindow 通过WindowManager创建
  4. WindowManager是外界访问Window的入口,
  5. window的具体实现在WindowMngerService.
  6. window分类:应用window(activity)子window(dialog,不能单独存在,必须要依附在特定父window) 系统window(toast,系统状态栏)
  7. window分层:z-ordered 层级打的覆盖层级小的上面 应用类:1-99 子window:1000-1999 系统:2000-2999
  8. windowmanager提供的方法;addView,updateView,removeView

window的内部机制:

  1. 每个window对应着一个view 一个ViewRootImpl
  2. window 和view通过ViewRootImpl建立联系
  3. window的添加过程: a. 检验参数是否合法 b. 创建ViewRootImpl,并将view添加到列表中 c. 通过ViewRootImpl来根系界面并完成window的添加过程 ViewRootImpl.setView 其实是view的绘制过程,setview中通过requestLayout异步绘制 requestlayout调用scheduleTraversals(view绘制的入口) d. windowSession【实际上是一个Binder】 IPC完成window的添加过程。其内部调用WindowManagerService实现添加window.
  4. deleteView中view会调用onDetachedFromWindow 做资源回收的工作
  5. 体现的设计模式 a. add remove,update等操作 是 windowManager的实现类windowManagerImpl中交由windowManagerGlobal处理,后者以工厂的方式提供实例。 b. windowManagerImpl体现了桥接模式,所有操作委托给WindowManagerImpl实现。

Android源码中接口,抽象类多如牛毛,好像自己不是Interface,abstract class都不好意思出门见人, 管中窥豹,感叹一声,google的程序员真是高瞻远瞩啊