这篇主要关注Activity的窗口对象(Window)和根视图对象(DecorView)之间的关系以及二者的建立过程。
ActivityManagerService负责管理每个Activity整个生命周期的所有活动。ActivityThread类是运行Activity的线程,实现开发者直接调用的Activity的功能。
我们从ActivityThread启动应用程序的Activity开始,分析应用程序的Activity的Window, DecorView的创建过程。
以下是ActivityThread启动Activity的简要过程,详细过程在分析ActivityManagerService时给出。
上面顺序图共有9个步骤,其中与Activity的Window和DecorView相关的是步骤3,步骤7,和步骤9.
下面详细说明这三个步骤中与Window和DecorView相关的操作。
步骤3,Activity.attach()函数中创建了这个Activity需要用到的Window,WindowManager。其中Window的具体实现类是PhoneWindow, WindowManager的具体实现类是WindowManagerImpl的封装类Window::LocalWindowManager。下面的顺序图是Activity.attach()函数中创建Window和WindowManager的详细过程。
所以Activity.attach()函数结束后,Activity的Window和WindowManger类型的成员变量都创建完成了。Win