接上, * 的分支, 标准Android中这就是最后的事件循环了,没有后面loadDefault()分支。
mController.start(icicle, getIntent());
这个start() 不是线程启动; ——〉调用dostart();
dostart()判断是否恢复历史页面后,调用google帐号登录,
GoogleAccountLogin.startLoginIfNeeded(mActivity,
new Runnable() {
@Override public void run() {
onPreloginFinished(icicle, intent, currentTabId, restoreIncognitoTabs,
fromCrash);
}
});
登录就直接onPreloginFinished(),在这里有
if (urlData.isEmpty()) {
t = openTabToHomePage();
} else {
t = openTab(urlData);
}
打开主页或新页面。
最终openTab()中调用loadUrl();
在loadUrl@Tab.java 中mMainView.loadUrl(url, headers);
loadUrl()调用 loadUrlImpl() --> mWebViewCore.sendMessage(EventHub.LOAD_URL, arg);
EventHub是WebViewCore的嵌套类,专门处理WebViewCore事件。
transferMessages@EventHub.class 中, case LOAD_URL: loadUrl();
调用 mBrowserFrame.loadUrl(url, extraHeaders);
这里 nativeLoadUrl(url, extraHeaders);
会发现 private native void nativeLoadUrl(String url, Map<String, String> headers);
native关键字,表示Java层结束了,下面继续C++的library中...