【Android-】Activity的显示

嵌套调用伪代码:

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);
  }
}
发布了106 篇原创文章 · 获赞 27 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/menghaocheng/article/details/104324087