关于 WebView 知识点的详解
什么是 WebView
WebView
是手机中内置了一款高性能webkit
内核浏览器,在SDK
中封装的一个组件。没有提供地址栏和导航栏,WebView
只是单纯的展示一个网页界面。在开发中经常都会用到。
ps: 关于 WebView 的介绍,可以看这里 《谈谈 WebView 的使用》
虽说 WebView 是安卓开发中设计的东西,但是作为一个前端开发人员,关注一些相关的东西还是有必要的.
性能的问题
WebView
是原生 APP
开发中的底层 SDK
,必然有性能上的问题,最直观的感受是比原生的要慢.
APP
在打开一个页面时,有以下的阶段.
WebView 初始化 ( 页面无反应 )
建立连接,接收数据,数据初始化 ( 页面无反应 -- 空白 )
页面渲染,页面 loading 中 ( 页面 loading )
显示页面 ( 页面展示 )
如图:
WebView 初始化
APP
加载网页与浏览器加载是有区别的,浏览器第一次打开,启动的是浏览器内核,而 APP
首次加载网页,首先是创建 WebView
实例.
分析
在
APP
的WebView
初始化期间,大致会分成以下的过程首次初始化: 客户端冷启动后,第一次打开
WebView
,从开始创建WebView
到开始建立网络连接.二次初始化: 在打开过
WebView
后,退出WebView
,再重新打开.
结论
作为前端开发工程师,统计页面的打开时间,是以网络连接开始作为起点的.但是
WebView
中用户感受到的打开时间会多70~700ms
.
之所以会有这样的结果,原因在于:
在浏览器中,我们输入地址时(甚至在之前),浏览器就可以开始加载页面。
而在客户端中,客户端需要先花费时间初始化
WebView
完成后,才开始加载。
而这段时间,由于 WebView
还不存在,所有后续的过程是完全阻塞的。
优化
由于这段过程发生在 native
的代码中,单纯靠前端代码是无法优化的;大部分的方案都是前端和客户端协作完成,以下是几个业界采用过的方案。
全局 WebView
方法:
在客户端刚启动时,就初始化一个全局的
WebView
待用,并隐藏;当用户访问了
WebView
时,直接使用这个WebView
加载对应网页,并展示。
这种方法可以比较有效的减少 WebView
在 App
中的首次打开时间。当用户访问页面时,不需要初始化 WebView
的时间。
当然这也带来了一些问题,包括:
额外的内存消耗。
页面间跳转需要清空上一个页面的痕迹,更容易内存泄露。
【参考东软专利 - 加载网页的方法及装置 CN106250434A】
客户端代理数据请求
方法:
在客户端初始化
WebView
的同时,直接由native
开始网络请求数据;当页面初始化完成后,向
native
获取其代理请求的数据。
此方法虽然不能减小 WebView
初始化时间,但数据请求和 WebView
初始化可以并行进行,总体的页面加载时间就缩短了;缩短总体的页面加载时间:
【参考腾讯分享:70%以上业务由H5开发,手机QQ Hybrid 的架构如何优化演进?】
还有其他各种优化的方式,不再一一列举,总结起来都是围绕两点:
在使用前预先初始化好
WebView
,从而减小耗时。在初始化的同时,通过
Native
来完成一些网络请求等过程,使得WebView
初始化不是完全的阻塞后续过程。
WebView 性能优化总结
一个加载网页的过程中,native
、网络、后端处理、CPU都会参与,各自都有必要的工作和依赖关系;让他们相互并行处理而不是相互阻塞才可以让网页加载更快:
WebView
初始化慢,可以在初始化同时先请求数据,让后端和网络不要闲着。后端处理慢,可以让服务器分
trunk
输出,在后端计算的同时前端也加载网络静态资源。脚本执行慢,就让脚本在最后运行,不阻塞页面解析。
同时,合理的预加载、预缓存可以让加载速度的瓶颈更小。
WebView
初始化慢,就随时初始化好一个WebView
待用。DNS
和链接慢,想办法复用客户端使用的域名和链接。脚本执行慢,可以把框架代码拆分出来,在请求页面之前就执行好。
前端开发中需要了解的关于 WebView
的内容不需要太多,以上基本了解大致的一个过程我个人觉得就足够了,当然关于 WebView
内容不止这些.
以上是关于 WebView 知识点的详解的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

小红书笔记怎么删除?在小红书APP中是可以编辑笔记的,多数的用户不知道小红书笔记如何的删除,接下来就是小编为用户带来的小红书笔记删除方法图文教程,感兴趣的用户快来一起看看吧!小红书使用教程小红书笔记怎么删除1、首先打开小红书APP进入到主页面,选择右下角【我】进入到专区;2、之后在我的专区,点击下图所示的笔记页面,选择要删除的笔记;3、进入到笔记页面,右上角【三个点】;4、最后下方会展开功能栏,点击【删除】即可完成。

小红书删除的笔记不能恢复。小红书作为一款知识分享和购物平台,为用户提供了记录笔记和收藏有用信息的功能。根据小红书的官方说明,已经删除的笔记是无法恢复的。小红书平台并没有提供专门的笔记恢复功能。这意味着,一旦在小红书中删除了笔记,无论是不小心误删还是其他原因,一般情况下是无法从平台上找回被删除的内容的。如果遇到特殊情况,可以尝试联系小红书的客服团队,看是否能够协助解决问题。

使用添加链接功能在iPhone上链接AppleNotes。笔记:如果您已安装iOS17,则只能在iPhone上的AppleNotes之间创建链接。在iPhone上打开“备忘录”应用。现在,打开要在其中添加链接的注释。您还可以选择创建新备忘录。点击屏幕上的任意位置。这将向您显示一个菜单。点击右侧的箭头以查看“添加链接”选项。点击它。现在,您可以键入注释的名称或网页URL。然后,点击右上角的完成,添加的链接将出现在笔记中。如果要添加指向某个单词的链接,只需双击该单词即可将其选中,选择“添加链接”并按

作为一名小红书的用户,我们都曾遇到过发布过的笔记突然不见了的情况,这无疑让人感到困惑和担忧。在这种情况下,我们该怎么办呢?本文将围绕“小红书发布过的笔记不见了怎么办”这一主题,为你详细解答。一、小红书发布过的笔记不见了怎么办?首先,不要惊慌。如果你发现笔记不见了,保持冷静是关键,不要慌张。这可能是由于平台系统故障或操作失误引起的。检查发布记录很简单。只需打开小红书App,点击“我”→“发布”→“所有发布”,就可以查看自己的发布记录。在这里,你可以轻松找到之前发布的笔记。3.重新发布。如果找到了之

使用Java13中的新的JavaFXWebView组件来显示网页内容随着Java的不断发展,JavaFX已经成为构建跨平台图形界面的主要工具之一。JavaFX提供了丰富的图形库和组件,让开发者能够轻松地创建各种各样的用户界面。其中,JavaFXWebView组件是一个非常有用的组件,它允许我们在JavaFX应用程序中显示网页内容。在Java13中,J

小红书怎么在笔记中添加商品链接?在小红书这款app中用户不仅可以浏览各种内容还可以进行购物,所以这款app中关于购物推荐、好物分享的内容是非常多的,如果小伙伴在这款app也是一个达人的话,也可以分享一些购物经验,找到商家进行合作,在笔记中添加连接之类的,很多人都愿意使用这款app购物,因为不仅方便,而且有很多达人会进行一些推荐,可以一边浏览有趣内容,一边看看有没有适合自己的衣服商品。一起看看如何在笔记中添加商品链接吧!小红书笔记添加商品链接方法 在手机桌面上打开app。 在app首页点击

JavaAPI开发中使用Jetty7进行Web服务器处理随着互联网的发展,Web服务器已经成为了应用程序开发的核心部分,同时也是许多企业所关注的焦点。为了满足日益增长的业务需求,许多开发人员选择使用Jetty进行Web服务器开发,其灵活性和可扩展性受到了广泛的认可。本文将介绍如何在JavaAPI开发中使用Jetty7进行We

表单验证是Web应用程序开发中非常重要的一个环节,它能够在提交表单数据之前对数据进行有效性检查,避免应用程序出现安全漏洞和数据错误。使用Golang可以轻松地实现Web应用程序的表单验证,本文将介绍如何使用Golang来实现Web应用程序的表单验证。一、表单验证的基本要素在介绍如何实现表单验证之前,我们需要知道表单验证的基本要素是什么。表单元素:表单元素是指
