Android 各个版本号WebView
转载请注明出处 http://blog.csdn.net/typename/ powered by miechal zhao : miechalzhao@gmail.com
前言:
依据Google发布的Android 各个系统版本号市场占有率(Google Android dashboards), Android 4.0及其以上系统将近90%左右,发展趋势必将是未来市面上差点儿是Android 4.0以上系统。本文主要关注Android 4.0及以上系统WebView的实现,从Android WebView实现的Framework层大致能够分为三段Android 4.0系列,Android 4.1---4.3系列,Android 4.4及其以上系列。
WebView差异
WebView是Android系统提供能显示网页的系统控件,它是一个特殊的View,同一时候它也是一个ViewGroup能够有非常多其它子View。在Android 4.4以下(不包括4.4)系统WebView底层实现是採用WebKit(http://www.webkit.org/)内核,而在Android 4.4及其以上Google 採用了chromium(http://www.chromium.org/)作为系统WebView的底层内核支持。在这一变化中Android 提供的WebView相关API并没有发生大变化,在4.4上也兼容低版本号的API而且引进了少部分API。这里简介下基于Chromium 的Webview和基于Webkit webview的差异,基于Chromium Webview提供更广的HTML5,CSS3,Javascript支持,在眼下最新Android 系统版本号5.0上基于chromium 37,Webview提供绝大多数的HTML5特性支持。Webkit JavaScript引起採用WebCore Javascript 在Android 4.4上换成了V8能直接提升JavaScript性能。另外Chromium 支持远程调试(Chrome DevTools)。
WebKit for WebView VS Chromium for WebView性能比对(測试环境 小米2. CM Browser. Android 4.1.1 VS 4.4.3)
Webkit for Webview | Chromium for Webview | 备注 | |
HTML5 | 278 | 434 | http://html5test.com/ |
远程调试 | 不支持 | 支持 | Android 4.4及以上支持 |
内存占用 | 小 | 大 | 相差20-30M左右 |
WebAudio | 不支持 | 支持 | Android 5.0及以上支持 |
WebGL | 不支持 | 支持 | Android 5.0及以上支持 |
WebRTC | 不支持 | 支持 | Android 5.0及以上支持 |
Android 4.0 WebView结构
Android 4.1--4.3 WebView结构
Android 4.1--4.3版本号WebView内核实现还是基于WebKit,但在WebView的Framework层发生了变化,引入了工厂模式,目地是为了将内核与上层API接口分离开来,分离的意义不不过抽象接口,更重要的是将来能替换内核部分的实现。 在4.1--4.3这一系列版本号native结构基本与4.0版本号同样,下图呈现新的变化:
Android 4.0--4.3 渲染
虽然之前4.0,与4.1--4.3是在不同的结构系列,其两者之间的差异主要是集中的Framework上的变化,这样的变化很多其它体如今Framework层结构上的变化,WebKit内核极其在Android上的表现机制并没有发生非常大变化,他们的渲染机制是同样的。以下介绍Android 4.0--4.3的渲染机制:
在Android 4.0上已经默认开启硬件加速,因此WebView的渲染默认是基于硬件渲染的,通过本人分析其在WebView被隐藏的那一帧是採用软件渲染,目的是降低硬件占用,让其它UI能及时的响应。在硬件渲染情况下WebView通过onDraw方法传递Canvas 并将其转行为HardwareCanvas ,并生成native的 DrawGLFunction指针,通知native做渲染。在软件模式下,WebView通过传递的Canvas 通知内核webkitDraw将内核的一帧生成picture传输到Canvas中,运行Canvas draw bitmap。
Android 4.4 WebView结构
Android WebView展望:
Chromium项目编译"android_webview_apk“ 眼下实现是基于Android SurfaceView,其渲染性能高于Android WebView的Canvas,历史遗留问题以及Android 系统WebView的作用特点,这一块随着Chromium 和 Android项目的整合,相信值得大家期待将来的Android WebView 的渲染性能会再次大幅提升。
本博客会持续更新Android WebView兴许版本号的变化,敬请关注 谢谢!
Android 5.0 Lollipop WebView
參考资料:
https://source.android.com/ Android 4.0---5.0
http://developer.android.com/reference/android/webkit/WebView.html
Android 各个版本号WebView的更多相关文章
- Android开发之WebView具体解释
概述: 一个显示网页的视图.这个类是你能够滚动自己的Web浏览器或在你的Activity中简单地显示一些在线内容的基础.它使用了WebKit渲染引擎来显示网页,包含向前和向后导航的方法(通过历史记录) ...
- Android:让WebView支持<input type=”file”…>元素
最近在做一个活动页面:用户上传一张图片进行缩放.旋转后点击下一步填写内容后生成图片! 做好后经过各种测试是没有问题的,基本没有什么明显BUG,流程都能走通,但是嵌入到APP后,问题就来了! 在IOS上 ...
- Android中脱离WebView使用WebSocket实现群聊和推送功能
WebSocket是Web2.0时代的新产物,用于弥补HTTP协议的某些不足,不过他们之间真实的关系是兄弟关系,都是对socket的进一步封装,其目前最直观的表现就是服务器推送和聊天功能.更多知识参考 ...
- HTML5学习总结-10 Android 控件WebView显示网页
WebView可以使得网页轻松的内嵌到app里,还可以直接跟js相互调用. webview有两个方法:setWebChromeClient 和 setWebClient 1)setWebClient: ...
- Android 中的 WebView实现 Html5 标签网页加载
自Android 4.4起,Android中的WebView开始基于Chromium(谷歌浏览器)支持浏览器的一系列功能,webkit解析网页各个节点,这个改变,使得WebView的性能大幅度提升,并 ...
- Android中使用WebView, WebChromeClient和WebViewClient加载网页 (能够执行js)
Android中使用WebView, WebChromeClient和WebViewClient加载网页 在android应用中,有时要加载一个网页,如果能配上一个进度条就更好了,而android ...
- Android中通过WebView控件实现与JavaScript方法相互调用的地图应用
在Android中通过WebView控件,可以实现要加载的页面与Android方法相互调用,我们要实现WebView中的addJavascriptInterface方法,这样html才能调用andro ...
- Android 各个版本WebView
转载请注明出处 http://blog.csdn.net/typename/ powered by miechal zhao : miechalzhao@gmail.com 前言: 根据Googl ...
- Android中的webview的进度条
<application android:icon="@drawable/hunqin" android:label="@string/app_name" ...
随机推荐
- [分享]ip地址爬取过滤的shell
http://www.hbbzy.me/分享ip地址爬取过滤的shell #!/bin/base #ip zhi地址匹配 #获取最新的ip地址 #author:haifeng #wget ftp:// ...
- webservie授权调用
Dim usercode As String = System.Configuration.ConfigurationSettings.AppSettings("SAPWebServiceU ...
- carousel轮播器
<div id="myCarousel" class="carousel slide" data-ride="carousel" st ...
- vue中添加favicon
基于vue-cli 2 首先将favicon.ico图片放在根目录下,通过以下两种方法使其显示正确. 方法一:修改index.html文件 <link rel="shortcut ic ...
- .less为后缀的文件是什么
.less为后缀的文件是什么 一.总结 1.less是什么:LESS 为 Web 开发者带来了福音,它在 CSS 的语法基础之上,引入了变量,Mixin(混入),运算以及函数等功能,大大简化了 CSS ...
- 应该知道的30个jQuery代码开发技巧
1. 创建一个嵌套的过滤器 .filter(":not(:has(.selected))") //去掉所有不包含class为.selected的元素 2. 重用你的元素查询 var ...
- xpath使用方法详解id 、starts-with、contains、text()和last() 的用法
1.XPATH使用方法 使用XPATH有如下几种方法定位元素(相比CSS选择器,方法稍微多一点): a.通过绝对路径定位元素(不推荐!) WebElement ele = driver.findEle ...
- RGB颜色转换为多种颜色工具、公式
http://www.easyrgb.com/index.php?X=CALC#Result http://www.easyrgb.com/index.php?X=MATH
- Notepad++使用心得和特色功能介绍 -> notepad/ultraedit的最好的替代品
[详细]Notepad++使用心得和特色功能介绍 -> notepad/ultraedit的最好的替代品 最近在用Notepad++,发现的确是很不错的工具,具体特色,看了下面介绍就知道了. [ ...
- ASP.NET MVC 入门4、Controller与Action
原帖地址:http://www.cnblogs.com/QLeelulu/archive/2008/10/04/1303672.html Controller是MVC中比較重要的一部分.差点儿全部的业 ...