1.環(huán)境準(zhǔn)備, 參考鏈接

八宿網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,八宿網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為八宿1000+提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個(gè)售后服務(wù)好的八宿做網(wǎng)站的公司定做!
2.添加國內(nèi)環(huán)境配置: 參考鏈接
3.新建
name: String類型,代表Channel的名字,也是其唯一標(biāo)識符。
messager:BinaryMessenger類型,代表消息信使,是消息的發(fā)送與接收的工具。
codec: MessageCodec類型或MethodCodec類型,代表消息的編解碼器。
fluuter中的MessageCodec用于二進(jìn)制格式數(shù)據(jù)與基礎(chǔ)數(shù)據(jù)之間的編解碼。BasicMessageChannel所使用的編解碼器就是MessageCodec。
iOS中,名稱為FlutterMessageCodec,是一個(gè)協(xié)議,定義了兩個(gè)方法:encode接收一個(gè)類型為id的消息,將其編碼為NSData類型,而decode接收NSData類型消息,將其解碼為id類型數(shù)據(jù)。
MessageCodec有多種不同的實(shí)現(xiàn):
與MessageCodec不同的是,MethodCodec用于MethodCall對象的編解碼,一個(gè)MethodCall對象代表一次從Flutter端發(fā)起的方法調(diào)用。MethodCall有2個(gè)成員變量:String類型的method代表需要調(diào)用的方法名稱,通用類型(Android中為Object,iOS中為id)的arguments代表需要調(diào)用的方法入?yún)?/p>
由于處理的是方法調(diào)用,故相比于MessageCodec,MethodCodec多了對調(diào)用結(jié)果的處理。當(dāng)方法調(diào)用成功時(shí),使用encodeSuccessEnvelope將result編碼為二進(jìn)制數(shù)據(jù),而當(dāng)方法調(diào)用失敗時(shí),則使用encodeErrorEnvelope將error的code、message、detail編碼為二進(jìn)制數(shù)據(jù)
MethodCodec有兩種實(shí)現(xiàn):
flap和flutter 都有鳥拍翅飛翔的意思前者move quickly 后者move lightly 以上都是做動詞
此外 flap在英英中表示行為上的令人驚訝及神經(jīng) flutter 有表示人熟睡時(shí)眼瞼的輕動,人緊張時(shí)心胃不舒服,還有一個(gè)女士向男士施展魅力時(shí)的拋媚眼
本文對比的是 UIWebView、WKWebView、flutter_webview_plugin(在iOS中使用的是WKWebView)的加載速度,內(nèi)存使用情況。
測試網(wǎng)頁打開的速度,只需要獲取 WebView 在開始加載網(wǎng)頁和網(wǎng)頁加載完成時(shí)的時(shí)間戳,時(shí)間戳的差即為打開網(wǎng)頁的時(shí)間
為了使差異更明顯,我們選擇較為復(fù)雜的 新浪首頁 進(jìn)行加載的對比,為了減小網(wǎng)絡(luò)對加載速度的影響,我們讓手機(jī)連接同一個(gè)網(wǎng)絡(luò),分別進(jìn)行 10 次測試然后取平均值,另外,我們需要關(guān)閉 WebView 的緩存,防止緩存對加載速度產(chǎn)生影響
下面使筆者進(jìn)行 10 次測試所得到的數(shù)據(jù)
結(jié)果讓我有點(diǎn)驚訝,一直以為 WKWebView 會是個(gè)王者。結(jié)果看,速度上 WKWebView 略慢一點(diǎn),不過總體差異不大(該結(jié)果僅僅是測試新浪的結(jié)果,僅供參考啦)
在這里,筆者又加了一個(gè)測試,嘗試記錄從 viewController 的 viewDidLoad 到 webview 的 didFinish 時(shí)間,測試了新浪的數(shù)據(jù),如下:
UIWebViewA : 4970、3808、3815、4250、3556 avg(4079.8) (加載完所有頁面)
UIWebViewB : 4103、3124、3070、3256、2835 avg(3277.6)(加載sina完畢)
WKWebView : 3672、3032、2892、2912、2739 avg(3049.4)
flutter_webView : 4532、3901、4310、3496、3378 avg(3923.4)
其中可以看到,webView 有兩行,UIWebViewB 的數(shù)據(jù)就是加載 sina 主站的時(shí)間;UIWebViewA 的數(shù)據(jù)是因?yàn)樵诩虞d完 sina 主站之后,新浪又加載了一個(gè) ,所以導(dǎo)致總時(shí)間延長,不過即使按照 UIWebViewB 的數(shù)據(jù)來比較,也是 wkWebView 略勝一籌。
此處可以看出 flutter_webView 使用的是 wkwebView,所以它吃虧的主要原因是 flutter 包了一層。
結(jié)論:
速度(didStart - didFinish) UIWebView flutter_webview WKWebView
速度(viewDidLoad - didFinish)WKWebView UIWebView flutter_webview
這里查看內(nèi)存使用的是 xcode 的 debug session 中的 memory。
首先看之前測試時(shí),連續(xù)打開十次新浪的內(nèi)存情況
接著我們在看一下打開淘寶首頁的內(nèi)存情況
從圖上可以看出,WKWebView 在內(nèi)存方面有很大的優(yōu)勢啊,UIWebView 的內(nèi)存是真的傷啊,然后 debug 看了一下 flutter_webView,他使用的就是原生的 webView 。
他相比較原生 WKWebView 的內(nèi)存開銷稍大一點(diǎn),從測試表現(xiàn)來看,一般大個(gè) 30 MB 左右。
結(jié)論:內(nèi)存 WKWebView flutter_webview UIWebView
可以在 html5test 中對瀏覽器的兼容性進(jìn)行評分,通過測試發(fā)現(xiàn)得分分別如下
因?yàn)?flutter 里使用的就是 WK,所以和原生的 WKWebView 一樣都是 444 分,比 UIWebView 的 437 略勝一籌
結(jié)論:兼容性 WKWebView = flutter_webview UIWebView
UIWebView : 速度相比較 WKWebView 稍快一點(diǎn),但是內(nèi)存是一大硬傷,所以只要條件允許,就不推薦使用了
WKWebView : 速度略慢一點(diǎn),不過差別不大,總體可以接受。是比UIWebView更好的選擇,推薦使用。
flutter_webView_plugin :在iOS中使用的就是原生的WKWebView,所以總體和 native WKWebView 表現(xiàn)差不多。如果是混編項(xiàng)目中,因?yàn)樗话艘粚樱皂撁婕虞d上存在一定的劣勢,所以混編項(xiàng)目中仍然推薦使用 WKWebView。不過如果從多端考慮、以及項(xiàng)目可遷移等,那么使用也未嘗不可,就是維護(hù)成本要增加一些,需要維護(hù)兩套 webView。這個(gè)就需要根據(jù)自己的情況自己取舍了。
flutter更容易學(xué),
Flutter 是 Google 開源的 UI 工具包,幫助開發(fā)者通過一套代碼庫高效構(gòu)建多平臺精美應(yīng)用,支持移動、Web、桌面和嵌入式平臺。Flutter 開源、免費(fèi),擁有寬松的開源協(xié)議,適合商業(yè)項(xiàng)目。
新聞標(biāo)題:flutter和,flutter和flap區(qū)別
URL地址:http://chinadenli.net/article35/dsihssi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供響應(yīng)式網(wǎng)站、軟件開發(fā)、關(guān)鍵詞優(yōu)化、ChatGPT、網(wǎng)站排名、營銷型網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)