应用启动时,Activity组件在启动之后(生命周期部分参见android R版本应用程序启动过程源码分析),在执行完onResume生命周期之后会执行添加窗口到系统、计算窗口大小和位置、应用执行measure-layout-draw、系统窗口状态刷新、系统动效(动效部分参见android R版本AppTransition动效源码分析)这几个动作。
1、 addWindow阶段
Activity的启动本质实际最终也是使用WindowManager去addView(add一个DecorView对象)进而使得wms调用addWindow增加一个WindowState对象,而Activity的addView动作发生在Activity.onResume之后(冷起activity才会有addView),也就是说只要onResume执行不完,肯定不会添加窗口到wms,依据activity指定的主题此时屏幕会显示主题色比如黑色白色(跨栈跳转场景则显示StartingWindow)等。此时创建出来的WindowState对应的状态mDrawState是NO_SURFACE(查看方法使用adb shell dumpsys window windows,具体参见android R版本常见dump信息分析),addWindow操作会注册InputChannel到IMS以便窗口能够接受input事件,添加窗口如果要通过applogcat<