Android面试基础Android开发Android开发经验谈

Activity---什么时候才可见?

2018-07-01  本文已影响3人  我是吸血鬼

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依赖。

上一篇下一篇

猜你喜欢

热点阅读