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 api各個版本特性簡單描述到6.0AndroidAPI
- Android WebView Resources$NotFoundExceptionAndroidWebViewException
- Android WebView的坑AndroidWebView
- android webview總結AndroidWebView
- jdk各個版本下載地址JDK
- Android webview JS 互動AndroidWebViewJS
- android webview秒開框架AndroidWebView框架
- 再學Android之WebViewAndroidWebView
- elastcisearch中文分詞器各個版本AST中文分詞
- 各個軟體版本定義描述
- Linux各個版本相關說明Linux
- PHP 各個版本新特性總結PHP
- pytorch各個版本的下載地址PyTorch
- Android Webview和ScrollView衝突和WebView使用總結AndroidWebView
- Linux哪個版本好?各個版本之間有什麼區別?Linux
- Android webview圖片過大AndroidWebView
- VMware Workstation各個版本的註冊碼
- Android SDK下各個資料夾作用Android
- Android LayoutInflater.inflate各個引數作Android
- 技術趣味史-Java 各個版本的特性Java
- Flutter 與 Android 原生 WebView 對比FlutterAndroidWebView
- Android 和 Webview 如何相互 sayHello(一)AndroidWebView
- Android webview 與 js(Vue) 互動AndroidWebViewJSVue
- Android與WebView資料互動AndroidWebView
- Android中WebView的使用指南:AndroidWebView
- Android 中 WebView 的除錯方法AndroidWebView除錯
- windows下安裝各個版本memcache擴充套件Windows套件
- 你不知道的Android WebView漏洞AndroidWebView
- Appium Android 獲取WebView元素的方法APPAndroidWebView
- Android webview “location.replace” 不起作用AndroidWebView
- vmware workstation 各個版本百度網盤下載
- Linux系統各個版本具體應用場景!Linux
- Tor Browser for Android 釋出首個穩定版本Android
- Android WebView 中的 Html 網頁定位操作AndroidWebViewHTML網頁
- Android效能優化(1)—webview優化篇Android優化WebView
- windows10 enterprise是什麼版本_win10各個版本怎麼區分WindowsWin10
- jdk5到jdk10各個版本的新特性JDK
- Xilinx官網查詢各個版本軟體的手冊
- Linux系統各個版本具體應用場景合集!Linux