关于窗口创建的那些事 之 内核剖析 读笔
2015-12-25 14:59
211 查看
先来说说窗口创建的过程.
从Wms的角度来看,窗口是一个View, Wms收到用户消息后, 需要把消息派发到View窗口, View本身不能接受消息, 真正接受用户消息的是 IWindow类, 而实现IWindow类的是 ViewRoot.W类, 每一个W类 内部都包含了一个View变量.
Wms把消息发送给W, W发送给View,之后由View自己处理.
窗口也是有很多种的.
关于窗口.Framework定义了三种类型,全部定义在了WindowManager类中.
第一种为有应用窗口类型 : 应用窗口指 该窗口对应一个Activity,因为加载Activity是由AMS完成的.所以创建应用窗口,只能在Activity内部来进行
第二种为子窗口: 所谓子窗口,该窗口必须有一哥父窗口, 父窗口可以使任何类型.
第三种为系统窗口:系统窗口不需啊哟对应任何Activity, 也不需要父窗口, 理论上是无法创建系统窗口,因为Activity没有权限, 系统进程可以创建系统窗口.
WindowManager对着三种类型进行了细化, 用int常量表示,这些实际代表了窗口对应的层(Layer),在Wms进行窗口叠加时, int值越大, 代表层的位置越靠上.表的类型如下所示:
从Wms的角度来看,窗口是一个View, Wms收到用户消息后, 需要把消息派发到View窗口, View本身不能接受消息, 真正接受用户消息的是 IWindow类, 而实现IWindow类的是 ViewRoot.W类, 每一个W类 内部都包含了一个View变量.
Wms把消息发送给W, W发送给View,之后由View自己处理.
窗口也是有很多种的.
关于窗口.Framework定义了三种类型,全部定义在了WindowManager类中.
第一种为有应用窗口类型 : 应用窗口指 该窗口对应一个Activity,因为加载Activity是由AMS完成的.所以创建应用窗口,只能在Activity内部来进行
第二种为子窗口: 所谓子窗口,该窗口必须有一哥父窗口, 父窗口可以使任何类型.
第三种为系统窗口:系统窗口不需啊哟对应任何Activity, 也不需要父窗口, 理论上是无法创建系统窗口,因为Activity没有权限, 系统进程可以创建系统窗口.
WindowManager对着三种类型进行了细化, 用int常量表示,这些实际代表了窗口对应的层(Layer),在Wms进行窗口叠加时, int值越大, 代表层的位置越靠上.表的类型如下所示:
相关文章推荐
- c++视频编辑代码小结
- ajax请求之返回数据的顺序问题分析
- 给WordPress的编辑后台添加提示框的代码实例分享
- 线路/信道编码技术(1)——8B/10B编码
- angularjs 从外部改变controller内的数据
- yii2项目前台页面开发中,用到的算法2 (例题解析)
- CSDN挑战编程——《金色十月线上编程比赛第二题:解密》
- js表达式
- ThreadLocal 开启事务
- android 使用xml drawable 实现 局部圆角,可用作圆角边框
- Android中关于pull解析xml
- 详解jsPlumb这个javascript的可拖动连线库
- Linux搭建FFMPEG环境实现MP4格式转m3u8格式
- XSLT转换器的使用(Xalan和Saxon)
- HDU-1018-Big Number
- Cocos2d-x中用Lua实现剪切板的文字复制粘贴(iOS篇)
- 软件工程学习总结
- Android获取本地系统时间
- Silverlight学习点滴之二——为RadioButton换上新衣
- Node.js的原型继承函数util.inherits + 开发框架Express4.x