天天看點

Android 拾遺

1. Activity的setContentView(int)方法,其實是這樣的:

public void setContentView(intlayoutResID) {
    getWindow().setContentView(layoutResID);
    initActionBar();
}
           

   getWindow()方法是傳回自PolicyManager.makeNewWindow()方法

   “mWindow = PolicyManager.makeNewWindow(this)”

   這樣擷取的一個Window對象,由于Window是個抽象類,唯一的基礎是PhoneWindow,是以查找到PhoneWindow的setContentView(int)方法:

public void setContentView(intlayoutResID) {
    if (mContentParent == null) {
    installDecor();
    } else {
    mContentParent.removeAllViews();
    }
    mLayoutInflater.inflate(layoutResID, mContentParent);
    finalCallbackcb = getCallback();
    if (cb != null && !isDestroyed()) {
        cb.onContentChanged();
    }
}
           

是以最後Activity中還是調用了LayoutInflater.inflate()方法。

繼續閱讀