androidwebview启动chromium渲染引擎的过程分析

androidwebview启动chromium渲染引擎的过程分析

ID:11591338

大小:375.50 KB

页数:47页

时间:2018-07-12

androidwebview启动chromium渲染引擎的过程分析_第1页
androidwebview启动chromium渲染引擎的过程分析_第2页
androidwebview启动chromium渲染引擎的过程分析_第3页
androidwebview启动chromium渲染引擎的过程分析_第4页
androidwebview启动chromium渲染引擎的过程分析_第5页
资源描述:

《androidwebview启动chromium渲染引擎的过程分析》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、AndroidWebView启动Chromium渲染引擎的过程分析AndroidWebView加载了Chromium动态库之后,就可以启动Chromium渲染引擎了。Chromium渲染引擎由Browser、Render和GPU三端组成。其中,Browser端负责将网页UI合成在屏幕上,Render端负责加载网页的URL和渲染网页的UI,GPU端负责执行Browser端和Render端请求的GPU命令。本文接下来详细分析Chromium渲染引擎三端的启动过程。AndroidWebView使用了单进程架构的Chromium来加载和渲染网页,因此它的Browser

2、端、Render端和GPU端都不是以进程的形式存在的,而是以线程的形式存在。其中,Browser端实现在App的UI线程中,Render端实现在一个独立的线程中,而GPU端实现在App的RenderThread中。注意,这是针对Android5.0及以上版本的。Android在4.4版本引入基于Chromium实现的WebView,那时候GPU端与Browser一样,都是实现在App的UI线程中。接下来我们只讨论AndroidWebView在Android5.0及以上版本的实现。AndroidWebView启动Chromium渲染引擎三端的过程如图1所示:从前

3、面一文可以知道,当我们在App的UI中嵌入一个WebView时,WebView会在内部创建一个类型为WebViewChromium的Provider。AndroidWebView就是通过这个Provider来启动和使用Chromium渲染引擎的。Chromium里面有一个android_webview模块。这个模块提供了两个类AwBrowserProcess和AwContents,分别用来封装Chromium的Content层提供的两个接口类BrowserStartupController和ContentViewCore,它们分别用来启动Chromium的Br

4、owser端和Render端。AndroidWebView启动Chromium的Browser端,实际上就是在App的UI线程创建一个BrowserMainLoop。Chromium以后需要请求Browser端执行某一个操作时,就可以向这个BrowserMainLoop发送一个Task。这个Task最终会在App进程的UI线程中调度执行。AndroidWebView启动Chromium的Render端,实际上就是在当前的App进程中创建一个线程。以后网页就由这个线程负责加载和渲染。这个线程称为In-ProcessRendererThread。由于Chromiu

5、m的GPU端实现在App的RenderThread中,这个RenderThread是由App负责启动的,因此Chromium无需启动它。不过,Chromium里的android_webview模块会启动一个DeferredGpuCommandService服务。当Chromium的Browser端和Render端需要执行GPU操作时,就会向DeferredGpuCommandService服务发出请求。这时候DeferredGpuCommandService服务又会通过App的UI线程将请求的GPU操作提交给App的RenderThread执行。这一点可以参考

6、前面一文的描述。我们在接下来的一篇文章也会对Chromium的Browser端和Render端执行GPU操作的过程进行详细的分析。接下来我们就结合源码,分析AndroidWebView启动Chromium的Browser端和Render端的过程。对于GPU端,我们仅仅分析与它相关的DeferredGpuCommandService服务的启动过程。在接下来一篇文章分析AndroidWebView执行GPU命令的过程时,我们再对GPU端进行更详细的分析。我们首先分析AndroidWebView启动Chromium的Browser端的过程。前面提到,WebView会

7、在内部创建一个类型为WebViewChromium的Provider。有了这个Provider之后,WebView就可以调用它的成员函数init启动Chromium的Browser端,如下所示:[java]viewplaincopyclassWebViewChromiumimplementsWebViewProvider,WebViewProvider.ScrollDelegate,WebViewProvider.ViewDelegate{......publicvoidinit(finalMapjavaScriptInterfa

8、ces,finalbooleanpri

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。