概述
Activity中Context的继承关系
参考资料:
Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析
https://blog.csdn.net/luoshengyang/article/details/8223770
1.Activity中的Window对象是一个PhoneWindow对象
2.PhoneWindow持有DecorView对象,还有一个ViewGroup类型的mContentParent对象
3.PhoneWindow父类Window类持有一个LocalWindowManager对象,LocalWindowManager持有WindowManagerImpl对象,用于和WindowManager通信,LocalWindowManager是Window类的一个内部类
4.LocalWindowManager对象,会创建一个Display对象,用于保存当前Activity窗口的一个特性
5.Activity在创建Window的时候,会通过setCallBack将自己这只给Window,这样当Window有变动时,会回调Activity的方法,
参考资料:
Android应用程序窗口(Activity)的视图对象(View)的创建过程分析
https://blog.csdn.net/luoshengyang/article/details/8245546
1.一个Activity的顶级View,DecorView是保存在PhoneWindow中的,因此Activity的setContentView实际上是调用PhoneWindow的setContentView,首先会创建DecorView,并且创建mContentParent对象,即找到id为content的View,然后判断是否需要显示或者隐藏TitleView,最后创建ContentView,并且添加到mContentParent中,,,第一步是在onCreate方法中完成
2.在handleResumeActivity方法中会获取Activity中的mWindowManager对象,是一个LocalWindowManager对象,并且调用mWindowManager的addView方法,
3.LocalWindowManager的addView方法实际上调用的WindowManagerImpl的addView方法,
4.在WindowManagerImpl的addView方法中,会创建ViewRoot对象,并且将ViewRoot对象,View对象,WindowManager.LayoutParam对象保存在相应数组中
Android应用程序窗口(Activity)添加到WindowManager过程
1.重要对象:IWindowSession,W,WindowState
2.IWindowSession一个应用程序只有一个对象,用于应用程序和WMS通信,ViewRoot的addView方法,实际调用的IWindowSession的相关方法
3.W类是WMS跟对应窗口通信的Binder对象,没有个Window都有一个W对象,W类是ViewRoot的内部类
4.每一个Window在WMS端都一个对应的WindowState对象,用于表示这个Window
Activity中View的测量布局过程:
1.Activity所对应的窗口在WMS端被激活以后,会调用ViewRoot的requestLayout方法,然后间接调用performTraversals方法,在这个方法中会判断mRequestLayout是否为真,如果为真,会调用measure和layout方法,测量和布局
最后
以上就是呆萌樱桃为你收集整理的Android开发-Activity中Window和View的创建过程分析Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析Android应用程序窗口(Activity)的视图对象(View)的创建过程分析的全部内容,希望文章能够帮你解决Android开发-Activity中Window和View的创建过程分析Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析Android应用程序窗口(Activity)的视图对象(View)的创建过程分析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复