Android Window创建应用窗口
来源:互联网 发布:linux中拷贝目录命令 编辑:程序博客网 时间:2024/05/16 15:34
一、创建Activity
1. 应用窗口必须对应Activity,AMS通知客户端ActivityThread启动Activity 。反射创建Activity对象
二、创建Window
2. activity.attach()方法设置内部变量。
3. activity.attach()方法创建Window对象。PolicyManager.makeNewWindow()创建(通过com.android.internal.policy.impl.Policy配置)创建PhoneWondow,赋值给Activity.mWindow
设置setCallback() [ Window的calback为当前Activity,就是为什么用户消息能够传递到Activity中的原因 ]
4. Window.mWindowManager赋值。WindowManager是一个接口,两个实现类Window.LocalWindowManager(是一个壳,其具体实现在其内部的WindowManagerImpl中) 与 WindowManagerImpl
三、创建ViewRoot
5. 添加View,从performLaunchActivity内部调用callActivityOnCreate开始,最终调用onCreate中的setContentView。
setContentView源码getWidnow.setContentView()
installDecor() 创建标题栏等
6. setContentView源码 ,分析Theme相关设置
7. Activity准备好后通知AMS,AMS最终调用Activity.makeVisible()
8. Activity.makeVisible()源码,窗口类型是TYPE_APPLICATION。 ViewGroup.addView 中“关卡” 判断WindowManager层级
9. LocalWindowManager.addView(WindowManagerImpl.addView一个应用仅有一个此对象),其中包含3个数组。通过ViewRoot.setView完成关键添加工作。
四、窗口添加
10. 数组mViews、mRoots、mParams 各保存View、ViewRoot、WindowManager.LayoutParams
11. 执行ViewRoot.setView 完成最后的窗口添加工作。
mAttachInfo赋值,
requestLayout 发出界面重新布局请求
sWindowSession.add 通知WMS添加窗口
1. 应用窗口必须对应Activity,AMS通知客户端ActivityThread启动Activity 。反射创建Activity对象
二、创建Window
2. activity.attach()方法设置内部变量。
3. activity.attach()方法创建Window对象。PolicyManager.makeNewWindow()创建(通过com.android.internal.policy.impl.Policy配置)创建PhoneWondow,赋值给Activity.mWindow
设置setCallback() [ Window的calback为当前Activity,就是为什么用户消息能够传递到Activity中的原因 ]
4. Window.mWindowManager赋值。WindowManager是一个接口,两个实现类Window.LocalWindowManager(是一个壳,其具体实现在其内部的WindowManagerImpl中) 与 WindowManagerImpl
三、创建ViewRoot
5. 添加View,从performLaunchActivity内部调用callActivityOnCreate开始,最终调用onCreate中的setContentView。
setContentView源码getWidnow.setContentView()
installDecor() 创建标题栏等
6. setContentView源码 ,分析Theme相关设置
7. Activity准备好后通知AMS,AMS最终调用Activity.makeVisible()
8. Activity.makeVisible()源码,窗口类型是TYPE_APPLICATION。 ViewGroup.addView 中“关卡” 判断WindowManager层级
9. LocalWindowManager.addView(WindowManagerImpl.addView一个应用仅有一个此对象),其中包含3个数组。通过ViewRoot.setView完成关键添加工作。
四、窗口添加
10. 数组mViews、mRoots、mParams 各保存View、ViewRoot、WindowManager.LayoutParams
11. 执行ViewRoot.setView 完成最后的窗口添加工作。
mAttachInfo赋值,
requestLayout 发出界面重新布局请求
sWindowSession.add 通知WMS添加窗口
0 0
- Android Window创建应用窗口
- Android Window 三 创建应用窗口
- Android Window理解(2)---应用窗口创建过程
- android中创建应用窗口
- <02>创建Window窗口
- Android创建窗口(一)创建应用窗口
- Android 应用窗口 Surface的创建
- 【Android源码】应用窗口Window的实现机制
- Android 内核 - 03 创建应用窗口 和 子窗口
- android window窗口机制
- window.创建模式窗口详解
- Extjs:Window之窗口创建
- Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析
- Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析
- Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析
- Android应用程序窗口(Activity)的窗口对象(Window) 的创建过程分析
- Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析
- Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析
- 初始安卓基本控件_TextView
- 一次无法umount解决过程
- bzoj 4524: [Cqoi2016]伪光滑数
- Android-Xml绘图
- C# datagridView数据插入
- Android Window创建应用窗口
- 图片加文字水印
- XSL 语言(EXtensible Stylesheet Language)
- 图像处理与机器视觉网络资源收罗——倾心大放送
- 白领夫妇卖房回乡 卖掉深圳一套房回武汉换了4套学区房
- 处窥设计模式(1)
- Apple的App Analytics统计平台你必须知道的
- 5--栈
- Thinkphp中事物无效的原因