所以Window是个什么东西?
网上一直有个很形象的比喻。Activity就像工匠,Window就像是窗户,View就像是窗花,LayoutInflater像剪刀,Xml配置像窗花图纸。
Window就是用来承载和管理View的。可能刚开始Android设计人员并没有区分出Activity和Window两者,把他们看成一个整体。但是为了独立生命周期,任务栈等(Activity作用) 和 View绘制(Window作用)这些功能降低耦合,把这个整个划分为现在这样了。每个Activity都会持有一个Window,每个Window会持有一个DecorView。
Window的定义和分类根据《Android开发艺术探索》,Window 有三种类型,分别是应用 Window、子 Window 和系统 Window。应用类 Window 对应一个 Acitivity,子 Window 不能单独存在,需要依附在特定的父 Window 中,比如常见的一些 Dialog 就是一个子 Window。系统 Window是需要声明权限才能创建的 Window,比如 Toast 和系统状态栏都是系统 Window。
Window 是分层的,每个 Window 都有对应的 z-ordered,层级大的会覆盖在层级小的 Window 上面,这和 HTML 中的 z-index 概念是完全一致的。在三种 Window 中,应用 Window 层级范围是 1~99,子 Window 层级范围是 1000~1999,系统 Window 层级范围是 2000~2999。
来源:https://blog.csdn.net/alcoholdi/article/details/79336268
网友评论