美文网首页
Activity ,PhoneWindow,DecorView,

Activity ,PhoneWindow,DecorView,

作者: samonking | 来源:发表于2022-07-22 10:02 被阅读0次

    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,

          本文链接:https://www.haomeiwen.com/subject/pfrmirtx.html