性能优化系列之『WebView:如何选择合适的WebView内核?』


一、iOS UIWebView

1、优点

  1. 从 iOS 2 开始就作为 App 内展示 Web 内容的容器
  2. 排版布局能力强

2、不足

  1. 内存泄露
  2. 极高内存峰值
  3. Touch Delay(300ms延迟)
  4. JavaScript 的运行性能和通信限制
  5. 2018年 iOS 12 以后已经被标记为 Deprecated 不再维护

二、iOS WKWebView

1、优势

  1. 苹果在 WWDC 2014 上推出的新一代 WebView 组件
  2. WKWebView 的内存开销比 UIWebView 小很多
  3. 在性能、稳定性、占用内存方面有很大提升
  4. 高达 60fps 的滚动刷新率
  5. 自身就支持了右滑返回手势
  6. 支持了更多的 HTML 的属性:
  7. 内存占用是 UIWebView 的1/4~1/3
  8. 加载速度比 UIWebView 提升了一倍左右
  9. 更为细致地拆分了 UIWebViewDelegate 中的方法
  10. 允许 JavaScript 的 Nitro 库加载并使用( UIWebView 中限制)大大提高了页面 JS 执行速度。
  11. 可以和 JS 直接互调函数,不像 UIWebView 需要第三方库WebViewJavaScriptBridge来协助处理和 JS 的交互。

2、不足

  1. 不支持页面缓存,需要自己注入 Cookie,而 UIWebView 是自动注入 Cookie。
  2. 无法发送 POST参数问题

三、Android WebKit 和 Chromium

在这里插入图片描述

四、Android 第三方

1、X5 内核

  1. 速度快:相比系统 WebView 的网页打开速度有 30+%的提升
  2. 省流量:使用云端优化技术使流量节省 20+%
  3. 更安全:安全问题可以在 24 小时内修复
  4. 更稳定:经过亿级用户的使用考验,CRASHE 率低于 0.15%
  5. 兼容好:无系统内核的碎片化问题,更少的兼容性问题
  6. 体验优:支持夜间模式、适屏排版、字体设置等浏览增强功能
  7. 功能全:在 H5、ES6 上有更完整支持
  8. 更强大:集成强大的视频播放器,支持视频格式远多于系统 WebView
  9. 视频和文件格式的支持 X5 内核多于系统内核
  10. 防劫持是 X5 内核的一大亮点

五、选型建议

  • iOS:WKWebView
  • Android:X5

写在最后

如果你感觉文章不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※!!!

腾讯X5内核WebView是一款基于Chromium内核的浏览器内核,相比于原生WebView,具有更好的性能和稳定性。以下是一些优化实践总结: 1. 集成腾讯X5内核 在使用WebView时,可以使用腾讯提供的X5内核替代原生内核。在集成X5内核时,需要在build.gradle文件中添加依赖: ``` dependencies { implementation 'com.tencent.tbs.tbssdk:sdk:43697' } ``` 2. 预加载 使用X5内核时,可以通过预加载提高WebView的响应速度。可以在应用启动时预加载X5内核: ``` // 在Application的onCreate方法中 QbSdk.initX5Environment(context, null) ``` 3. 启用多进程 如果应用中使用了多个WebView,可以启用多进程来提高性能和稳定性。可以在AndroidManifest.xml文件中设置: ``` <application android:name=".MyApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" android:process=":webview"> ``` 4. 启用硬件加速 在使用X5内核时,可以启用硬件加速来提高渲染速度。可以在布局文件中设置: ``` <com.tencent.smtt.sdk.WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" android:layerType="hardware" /> ``` 5. 使用缓存 使用缓存可以减少网络请求,提高WebView的加载速度。可以在初始化WebView时设置: ``` val webSettings = webView.settings webSettings.cacheMode = WebSettings.LOAD_CACHE_ELSE_NETWORK ``` 以上是一些常见的优化实践总结,可以根据具体的场景进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老__L

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值