Activity、Window及View关系

Activity、Window及View之间的关系

       我们在研究Android中Activity和PhoneWindow(它是Window的子类)及DecorView(根级View)之间的关系时,其实时从Activity.setContentView()入手。

Activity、Window及View关系

我们知道在Activity.attach中创建了唯一对应的PhoneWindow类,此时建立了Activity与PhoneWinow的绑定关系,其实Activity只是PhoneWindow的载体,它里面要展示的UI内容依赖PhoneWindow,所以Activity.setContentView()即是调用PhoneWindow.setContentView()。

Activity、Window及View关系

那么接下来我们就看看PhoneWindow.setContentView()中做了什么

Activity、Window及View关系

我们看到在PhoneWindow中初始化了DecorView(它是继承FrameLayout),那么我们的布局View是怎样被绑定添加到这DecorView中的呢,我们再来看看DecorView的初始化是怎么做的

Activity、Window及View关系

我们看到创建完DecorView之后还会创建一个基于ViewGroup的mContentParent类,而我们的布局View也是添加到mContentPatent上。

综上所分析,Activity和Window及View关系如下图所示

Activity、Window及View关系