Activity ,PhoneWindow,DecorView,ViewRootImpl的关系

1.phonewindow是作为view与activity之间的一个管理工具,创建是在activity的attach方法中,作为window的一个实现类。

2.decorview是因为我们的应用可能会有不同的主题,所以需要一个更顶层的view。

加载布局文件,主要就是在setcontentview方法里面创建,调用。

3.viewrootimpl的主要作用是处理view的事件分发,绘制等。

小结

到此,Activity终于完成了他的启动生命周期,界面也显示出来了,也有了成型的Activity。

虽然这中间角色比较多,但是每个角色又不可或缺:

因为需要管理View,创建出了PhoneWindow; 因为需要根据主题显示不同的布局结构,创建出了根ViewDecorView; 因为需要处理View的各种事件,包括绘制、事件分发,创建出了ViewRootImpl。

大家各忙各的,并听命于Activity。


Activity、PhoneWindow、DecorView、ViewRootImpl 之间的关系?

PhoneWindow:是Activity和View交互的中间层,帮助Activity管理View。

DecorView:是所有View的最顶层View,是所有View的parent。

ViewRootImpl:用于处理View相关的事件,比如绘制,事件分发,也是DecorView的parent。

四者的创建时机?

Activity创建于performLaunchActivity方法中,在startActivity时候触发。

PhoneWindow,同样创建于performLaunchActivity方法中,再具体点就是Activity的attach方法。

DecorView,创建于setContentView->PhoneWindow.installDecor。

ViewRootImpl,创建于handleResumeActivity方法中,最后通过addView被创建。

你可能感兴趣的:(Activity ,PhoneWindow,DecorView,ViewRootImpl的关系)