码迷,mamicode.com
首页 > 移动开发 > 详细

Android Window 三 创建应用窗口

时间:2015-04-26 15:14:39      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:



创建应用窗口
一、创建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添加窗口


参考资料:

《Android 内核剖析》 第8章 8.3 创建应用窗口

图解Android - Android GUI 系统 (2) - 窗口管理 (View, Canvas, Window Manager)



android的窗口机制分析------UI管理系统 (Window层级)


Android Window 三 创建应用窗口

标签:

原文地址:http://blog.csdn.net/androiddevelop/article/details/45288417

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!