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 里内容 自适应屏幕的终极方法
解决 android 高低版本 webView 里内容 自适应屏幕的终极方法 参考文章: (1)解决 android 高低版本 webView 里内容 自适应屏幕的终极方法 (2)https://ww ...
- Android中的webview详细使用
webview向html传递参数 方式一 通过 cookie传参 CookieSyncManager.createInstance(this);CookieManager cookieManager ...
- Android 8.0学习 (36)---Android 8.0 WebView 拍照、简易预览、二维码扫描 各种问题解决
Android 8.0 WebView 拍照.简易预览.二维码扫描 各种问题解决 项目用到了WebView包装HTML5做成app使用,其中有页面用到了二维码和拍照上传功能.本人从未做过android ...
- Android之深入WebView
WebView 目录 思维导图 WebView 的基本使用 WebView WebSettings WebViewClient WebChromeClient WebView 与 JS 交互 Andr ...
- Android各个版本API的区别
Android各个版本API的区别 Android 1.5 API变更概要: 1.UI framework · Framework for easier background/UI thread in ...
- [Android各版本特性]Android 4.4 Kitkat
[Android各版本特性]专栏目录: 01. Android API 版本对照表 02. Android 4.4以前版本特性 03. 为什么以Android4.4做分界线 04. Android 4 ...
- android 各个版本安全特性
一.Android SDK与API Level Google发布的Android系统习惯以甜点命令,并且首字母以字母顺序表依次排序,对应表如下: 平台版本 API级别 版本代号 发布时间 Androi ...
- Android历史版本
Android操作系统是一个由Google和开放手持设备联盟共同开发发展的移动设备操作系统,其最早的一个版本Android 1.0 beta发布于2007年11月5日,至今已经发布了多个更新.这些更新 ...
- Android 各版本演变特性整理
目录 官网: Android 12(S) Android 11(R) Android 10(Q) Android 9.0 (P) Android 8.0 (O) Android 5.0 Android ...
最新文章
- php监听input,jQuery如何实时监听获取input输入框的值
- 网站设计与开发流程图
- Ubuntu解决gedit warning问题的方法
- BUUCTF(pwn)jarvisoj_fm --格式化字符串漏洞
- Conda官方下载安装步骤及conda用法详细介绍
- python知识点汇总百度文库_PYTHON知识点汇总.doc
- c语言srand函数怎么用_C语言的main函数到底该怎么写
- lasso回归_线性回归amp;lasso回归amp;岭回归介绍与对比
- 三只松鼠回应产品含有丙烯酰胺一事:产品符合国家食品安全标准
- 中国加热棒行业市场供需与战略研究报告
- RapidJson 的使用
- python简单图片处理
- ADS内Smith Chart Utility消失了Palette如何找回
- PTA题目:顺序表基本操作
- 怎样在word表格中快速输入序号?
- C++:利用泰勒公式求cos x近似值
- php 类 抽象方法,「php抽象类和抽象方法」- 海风纷飞Blog
- 玩家在地形上的位置同步给地图
- 【应用随机过程】02. 马尔可夫链及其概率分布
- Windows VScode Linter pylint is not installed