Android4.4 webview chromium显示网页的chromium内核结构

2023-11-03 07:58

本文主要是介绍Android4.4 webview chromium显示网页的chromium内核结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

ndroid4.4 webview chromium显示网页的chromium内核结构


id="iframeu2386381_0" src="http://pos.baidu.com/pckm?sz=720x250&rdid=2386381&dc=2&di=u2386381&dri=0&dis=0&dai=1&ps=250x1425&coa=at%3D3%26rsi0%3D720%26rsi1%3D250%26pat%3D6%26tn%3DbaiduCustNativeAD%26rss1%3D%2523FFFFFF%26conBW%3D1%26adp%3D1%26ptt%3D0%26titFF%3D%2525E5%2525BE%2525AE%2525E8%2525BD%2525AF%2525E9%25259B%252585%2525E9%2525BB%252591%26titFS%3D%26rss2%3D%2523000000%26titSU%3D0%26ptbg%3D90%26piw%3D0%26pih%3D0%26ptp%3D0&dcb=BAIDU_SSP_define&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1472796314650&ti=android4.4%20webview%20chromium%E6%98%BE%E7%A4%BA%E7%BD%91%E9%A1%B5%E7%9A%84chromium%E5%86%85%E6%A0%B8%E7%BB%93%E6%9E%84%20%7C%20%E9%98%B3%E5%92%8C%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91&ari=2&dbv=2&drs=4&pcs=1903x973&pss=1903x3427&cfv=0&cpl=14&chi=1&cce=true&cec=UTF-8&tlm=1472796314&rw=973&ltu=http%3A%2F%2Fwww.mobile-open.com%2F2015%2F74620.html&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DM-zPHRnyPOwtSYWNDQFpbu6kooIqQGzOZ8jgBN_zr6KsId1IoBLDLhOGU-LU7o8QkVX5eLkrjSDi6ix93zLOva%26wd%3D%26eqid%3D8d3de68e0000e82c0000000357c9169b&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=false&cmi=17&col=zh-CN&cdo=-1&tcn=1472796315&qn=bc9fff63ed317d63&tt=1472796314601.53.53.56" width="720" height="250" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="margin: 0px; padding: 0px; border-width: 0px; border-style: initial; vertical-align: bottom; background: transparent;">
id="BAIDU_SSP__wrapper_u2543106_0_iframe" src="http://pos.baidu.com/pckm?rdid=2543106&dc=2&di=u2543106&dri=0&dis=0&dai=2&ps=500x705&dcb=BAIDU_SSP_define&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1472796314650&ti=android4.4%20webview%20chromium%E6%98%BE%E7%A4%BA%E7%BD%91%E9%A1%B5%E7%9A%84chromium%E5%86%85%E6%A0%B8%E7%BB%93%E6%9E%84%20%7C%20%E9%98%B3%E5%92%8C%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91&ari=2&dbv=2&drs=4&pcs=1903x973&pss=1903x3427&cfv=0&cpl=14&chi=1&cce=true&cec=UTF-8&tlm=1472796314&rw=973&ltu=http%3A%2F%2Fwww.mobile-open.com%2F2015%2F74620.html&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DM-zPHRnyPOwtSYWNDQFpbu6kooIqQGzOZ8jgBN_zr6KsId1IoBLDLhOGU-LU7o8QkVX5eLkrjSDi6ix93zLOva%26wd%3D%26eqid%3D8d3de68e0000e82c0000000357c9169b&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=false&cmi=17&col=zh-CN&cdo=-1&tcn=1472796315&qn=e21065472c142787&tt=1472796314601.374.6885.6889" width="250" height="200" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="margin: 0px; padding: 0px; border-width: 0px; border-style: initial; vertical-align: bottom; background: transparent;">
关闭
id="BAIDU_SSP__wrapper_u2544541_0_iframe" src="http://pos.baidu.com/pckm?rdid=2544541&dc=2&di=u2544541&dri=0&dis=0&dai=3&ps=500x705&dcb=BAIDU_SSP_define&dtm=HTML_POST&dvi=0.0&dci=-1&dpt=none&tsr=0&tpr=1472796314650&ti=android4.4%20webview%20chromium%E6%98%BE%E7%A4%BA%E7%BD%91%E9%A1%B5%E7%9A%84chromium%E5%86%85%E6%A0%B8%E7%BB%93%E6%9E%84%20%7C%20%E9%98%B3%E5%92%8C%E7%A7%BB%E5%8A%A8%E5%BC%80%E5%8F%91&ari=2&dbv=2&drs=4&pcs=1903x973&pss=1903x3427&cfv=0&cpl=14&chi=1&cce=true&cec=UTF-8&tlm=1472796315&rw=973&ltu=http%3A%2F%2Fwww.mobile-open.com%2F2015%2F74620.html&ltr=https%3A%2F%2Fwww.baidu.com%2Flink%3Furl%3DM-zPHRnyPOwtSYWNDQFpbu6kooIqQGzOZ8jgBN_zr6KsId1IoBLDLhOGU-LU7o8QkVX5eLkrjSDi6ix93zLOva%26wd%3D%26eqid%3D8d3de68e0000e82c0000000357c9169b&ecd=1&psr=1920x1080&par=1920x1040&pis=-1x-1&ccd=24&cja=false&cmi=17&col=zh-CN&cdo=-1&tcn=1472796315&qn=cbaf4a494fff621e&tt=1472796314601.813.7927.7928" width="120" height="270" align="center,center" vspace="0" hspace="0" marginwidth="0" marginheight="0" scrolling="no" frameborder="0" allowtransparency="true" style="margin: 0px; padding: 0px; border-width: 0px; border-style: initial; vertical-align: bottom; background: transparent;">
关闭

android4.4 webview chromium显示网页的chromium内核结构

android4.4 webview chromium是单进程的,图中所有组件都运行在Browser进程中。
按从上而下的顺序介绍这张图中与显示网页相关的chromium内核结构。
1.AwContents->WebContentsImpl

AwContnents的创建过程如下图:

android4.4 webview chromium显示网页的chromium内核结构

AwContents是WebView接口的主要实现类。
native层的AwContents包含chromium内核browser组件中的类WebContents。
WebContents是chromium内核browser组件的入口。
我们看AwContents的java层和native层的结构。

android4.4 webview chromium显示网页的chromium内核结构

ContentViewCZ"http://www.2cto.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

android4.4 webview chromium显示网页的chromium内核结构

RenderWidgetHostDelegate:
对RenderWidgetHost的状态感兴趣的类都会实现这个接口。用于接收RenderWidgetHost的状态变化通知。
RenderViewHostDelegate:
对RenderViewHost的状态感兴趣的类都会实现这个接口。用于接收RenderViewHost的状态变化通知。
RenderViewHostManager负责创建和管理WebContentsImpl中用到的RenderViewHosts。
WebContentsImpl的构造函数中创建了RenderViewHostManager实例,并将自身作为RenderWidgetHostDelegate
和RenderViewHostDelegate的实例传给RenderViewHostManager。
RenderViewHostManager通过回调这两个接口通知WebContentsImpl当前RenderWidgetHost和RenderViewHost
的状态变化。
RenderViewHostImpl的创建过程如下。

android4.4 webview chromium显示网页的chromium内核结构

RenderViewHostImpl与RenderViewImpl是一一对应的。

3.renderer host->renderer

renderer组件中RenderViewImpl是核心模块。
下图是应用层触发的RenderViewImpl创建过程。

android4.4 webview chromium显示网页的chromium内核结构

4.renderer->webkit glue

RenderViewImpl结构图

android4.4 webview chromium显示网页的chromium内核结构

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的结构图:

android4.4 webview chromium显示网页的chromium内核结构

这篇关于Android4.4 webview chromium显示网页的chromium内核结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/336721

相关文章

Java使用WebView实现桌面程序的技术指南

《Java使用WebView实现桌面程序的技术指南》在现代软件开发中,许多应用需要在桌面程序中嵌入Web页面,例如,你可能需要在Java桌面应用中嵌入一部分Web前端,或者加载一个HTML5界面以增强... 目录1、简述2、WebView 特点3、搭建 WebView 示例3.1 添加 JavaFX 依赖3

电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案

《电脑显示mfc100u.dll丢失怎么办?系统报错mfc90u.dll丢失5种修复方案》最近有不少兄弟反映,电脑突然弹出“mfc100u.dll已加载,但找不到入口点”的错误提示,导致一些程序无法正... 在计算机使用过程中,我们经常会遇到一些错误提示,其中最常见的就是“找不到指定的模块”或“缺少某个DL

一文教你Python如何快速精准抓取网页数据

《一文教你Python如何快速精准抓取网页数据》这篇文章主要为大家详细介绍了如何利用Python实现快速精准抓取网页数据,文中的示例代码简洁易懂,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录1. 准备工作2. 基础爬虫实现3. 高级功能扩展3.1 抓取文章详情3.2 保存数据到文件4. 完整示例

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

python获取网页表格的多种方法汇总

《python获取网页表格的多种方法汇总》我们在网页上看到很多的表格,如果要获取里面的数据或者转化成其他格式,就需要将表格获取下来并进行整理,在Python中,获取网页表格的方法有多种,下面就跟随小编... 目录1. 使用Pandas的read_html2. 使用BeautifulSoup和pandas3.

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

新特性抢先看! Ubuntu 25.04 Beta 发布:Linux 6.14 内核

《新特性抢先看!Ubuntu25.04Beta发布:Linux6.14内核》Canonical公司近日发布了Ubuntu25.04Beta版,这一版本被赋予了一个活泼的代号——“Plu... Canonical 昨日(3 月 27 日)放出了 Beta 版 Ubuntu 25.04 系统镜像,代号“Pluc

使用Java实现通用树形结构构建工具类

《使用Java实现通用树形结构构建工具类》这篇文章主要为大家详细介绍了如何使用Java实现通用树形结构构建工具类,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录完整代码一、设计思想与核心功能二、核心实现原理1. 数据结构准备阶段2. 循环依赖检测算法3. 树形结构构建4. 搜索子

使用Python实现获取网页指定内容

《使用Python实现获取网页指定内容》在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助... 目录引言1. 网页抓取的基本概念2. python中的网页抓取库3. 安装必要的库4. 发送HTTP请求并获取网页内容5. 解

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark