android4.4 webview chromium顯示網頁的chromium核心結構

來源:互聯網
上載者:User

android4.4 webview chromium是單進程的,圖中所有組件都運行在Browser進程中。
按從上而下的順序介紹這張圖中與顯示網頁相關的chromium核心結構。
1.AwContents->WebContentsImpl

AwContnents的建立過程如:

AwContents是WebView介面的主要實作類別。
native層的AwContents包含chromium核心browser組件中的類WebContents。
WebContents是chromium核心browser組件的入口。
我們看AwContents的java層和native層的結構。

ContentViewCZ喎?http://www.bkjia.com/kf/ware/vc/" target="_blank" class="keylink">vcmU6PGJyPgpqYXZhsuNBd0NvbnRlbnRzvatXZWJWaWV3tcS907/atffTw9eqvdO4+GphdmGy40NvbnRlbnRWaWV3Q29yZaGjbmF0aXZlsuM8YnI+CkNvbnRlbnRWaWV3Q29yZbD8uqxCcm93c2Vy1+m8/rXEyOu/2ldlYkNvbnRlbnRzSW1wbKGj1ebV/cq1z9ZXZWJWaWV3uabE3Dxicj4KtcTKx1dlYkNvbnRlbnRzSW1wbKGjPGJyPgpBd0NvbnRlbnRzQ2xpZW50Ojxicj4KQXdDb250ZW50c0NsaWVudLXEyrXP1sDgV2ViVmlld0NvbnRlbnRzQ2xpZW50QWRhcHRlcrD8uqzU2ldlYlZpZXdDaHJvbWl1bdbQo6w8YnI+CldlYlZpZXdDaHJvbWl1bcD708PV4rj2wOC908rVQXdDb250ZW50c7XEu9i196GjV2ViVmlld0NvbnRlbnRzQ2xpZW50QWRhcHRlcjxicj4Kt+LXsMHL06bTw7LjyrXP1rXEV2ViVmlld0NsaWVudLrNV2ViQ2hyb21lQ2xpZW50Ljxicj4KQXdDb250ZW50c0NsaWVudEJyaWRnZTo8YnI+Cs6qQXdDb250ZW50c0NsaWVudLSmwO1qc8/gudi1xGpuac2o0MWhozxicj4KQXdXZWJDb250ZW50c0RlbGVnYXRlOjxicj4KysdBd0NvbnRlbnRzQ2xpZW50vdO/2rXE0ruyv7fWo6zTw9PavdPK1VdlYkNvbnRlbnRzSW1wbMSjv+m1xLvYtfehozxicj4KQXdXZWJDb250ZW50c0RlbGVnYXRlvau+38zlyrXP1ra816q907j4QXdDb250ZW50c0NsaWVudKGjPGJyPgpXZWJDb250ZW50c0ltcGy0tL2ouf2zzMjnz8KjujwvcD4KPHA+PGltZyBzcmM9"http://www.2cto.com/uploadfile/Collfiles/20140609/20140609091213136.jpg" alt="\">

2.WebContentsImpl->Renderer host

RenderWidgetHostDelegate:
對RenderWidgetHost的狀態感興趣的類都會實現這個介面。用於接收RenderWidgetHost的狀態變化通知。
RenderViewHostDelegate:
對RenderViewHost的狀態感興趣的類都會實現這個介面。用於接收RenderViewHost的狀態變化通知。
RenderViewHostManager負責建立和管理WebContentsImpl中用到的RenderViewHosts。
WebContentsImpl的建構函式中建立了RenderViewHostManager執行個體,並將自身作為RenderWidgetHostDelegate
和RenderViewHostDelegate的執行個體傳給RenderViewHostManager。
RenderViewHostManager通過回調這兩個介面通知WebContentsImpl當前RenderWidgetHost和RenderViewHost
的狀態變化。
RenderViewHostImpl的建立過程如下。

RenderViewHostImpl與RenderViewImpl是一一對應的。

3.renderer host->renderer

renderer組件中RenderViewImpl是核心模組。
是應用程式層觸發的RenderViewImpl建立過程。

4.renderer->webkit glue

RenderViewImpl結構圖

WebKit::WebView的建立過程
RenderViewImpl::Create()調用RenderViewImpl的建構函式建立
RenderViewImpl的執行個體,之後調用RenderViewImpl::Initialize:
RenderViewImpl::Initialize(){
webwidget_ = WebView::create(this);
}
RenderWidget的執行個體建立是由下來函數觸發的:
RenderViewImpl::createPopupMenu(){
RenderWidget* widget =
RenderWidget::Create(routing_id_, popup_type, screen_info_);
return widget->webwidget();
}
RenderWidget::Create()只有這一個入口。
用來建立不同類型的快顯視窗。

5. webkit glue->WebKit

WebViewImpl的結構圖:


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.