Activity什么时候才能够被我们看到呢?
直接看答案:
onResume()的时候,Activity的布局才可见
ActivityThread#handleResumeActivity
activity.makeVisible();
void makeVisible() {
if (!mWindowAdded) {
ViewManager wm = getWindowManager();
wm.addView(mDecor, getWindow().getAttributes());
mWindowAdded = true;
}
mDecor.setVisibility(View.VISIBLE);
}
makeVisible 的主要作用是mDecor.setVisibility(View.VISIBLE);
。同时,如果mWindowAdded为false,那么将会把mDecor
加入到WindowManager
.。
拓展问题:
ViewRootImpl
的创建时机?/ ViewRootImpl
什么时候创建?
WindowManager#addView
被调用的时候会通过WindowManagerImpl#addView
通过桥接的设计模式用WindowManagerGlobal#addView
创建ViewRootImpl
实例。同时,mDecor会作为构造函数的参数被ViewRootImpl
依赖。