我们知道一个DecorView的创建是在Activity中调用setContentView后,一步一步实现的。那么,创建好了DecorView后,我们是怎么将它加入进window呢?
handleLaunchActivity中的performLaunActivity方法
调用startActivity方法时,最终会调用ActivityThread的handleLaunchActivity方法创建Activity。在该方法中会调用performLaunchActivity方法,创建一个Activity。
private void handleLaunchActivity(ActivityClientRecord r, Intent customIntent) {
......
Activity a = performLaunchActivity(r, customIntent);
.......
}
在performLaunchActivity方法中,会调用attach方法实例化一个PhoneWindow。
final void attach(Context context, ActivityThread aThread,
Instrumentation instr, IBinder token, int ident,
mWindow = new PhoneWindow(this);
mWindow.setCallback(this);
attach方法之后会调用callActivityOnCreate方法,进而调用Activity的onCreate方法。