嵌套调用伪代码:
ActivityThread.java::handleLaunchActivity(){
//启动Activity
ActivityThread.java::performaLaunchActivity(){
//根据Activity的类名通过Java反射机制来创建对应的Activity
Instrumentation.java::newActivity(){}
Activity.java::attach(){
//Note1:Activity.mWindow是PhoneWindow的实例
mWindow = new PhoneWindow()
mWindow.setWindowManager(context.getSystemService(Context.WINDOW_SERVICE)){
//Note2:PhoneWhinde.mWindowManager是WindowManagerImpl的实例
mWindowManager = WindowManagerImpl.java::createLocalWindowManager(){
new WindowManagerImpl();
}
}
}
//调用Activity的onCreate函数
Instrumentation.java::callActivityOnCreate(){
Activity.java::performCreate(){
Activity.java::onCreate(){
Activity.java::setContentView(View view){
PhoneWindow.java::setContentView(View view){
PhoneWindow.java::installDecor(){
mDecor = PhoneWindow.java::generateDecor();
mContentParent = PhoneWindow.java::generateLayout(mDecor);
mTitleView = findViewById(R.id.title);
}
ViewGroup.java::addView(view)
}
}
}
}
}
//唤醒Activity
ActivityThread.java::handleResumActivity(){
ActivityThread.java::performResumeActivity()
View decor = r.window.getDecorView();
ViewManager wm = a.getWindowManager();
wm.addView(decor, l);
}
}