当从Window的角度看待Activity的启动过程时,可以看到以下流程:
1.在system_server进程中发送消息到android.anim线程来处理Starting Window逻辑;
2.在目标进程中,执行ActivityThread.handleLaunchActivity方法,会回调目标Activity的onCreate方法,同时初始化一些与Window相关的对象或服务端的Binder引用,然后通过setContentView方法创建一个DecorView对象;
3.在目标进程中,执行ActivityThread.handleResumeActivity方法,会回调目标Activity的onResume方法,然后调用目标Activity的makeVisible方法;
4.在makeVisible方法中,会调用WindowManagerImpl.addView方法绘制View,并通过Binder远程调用WMS添加Window。