WebView相关面试题

本文探讨了如何提高WebView的加载速度,包括预加载WebView、同时加载数据和利用客户端请求数据。此外,还介绍了WebView与JavaScript的交互方式,如loadUrl、evaluateJavascript以及addJavascriptInterface。同时,提到了安全漏洞的防范,并简要概述了JSBridge的工作原理。
摘要由CSDN通过智能技术生成

1、如何提高WebView加载速度

美团技术分享

WebView启动过程大概分为以下几个阶段:
在这里插入图片描述
App中打开WebView的第一步并不是建立连接,而是启动浏览器内核。

优化手段围绕着以下两个点进行:

  • 预加载WebView。

  • 加载WebView的同时,请求H5页面数据。

常见的方法是全局WebView,在客户端刚启动时,就初始化一个全局的WebView待用,并隐藏;这种方法可以比较有效的减少WebView在App中的首次打开时间。当用户访问页面时,不需要初始化WebView的时间。

当然这也带来了一些问题,包括:

  • 额外的内存消耗。
  • 页面间跳转需要清空上一个页面的痕迹,更容易内存泄露。
  • 客户端代理页面请求WebView初始化完成后向客户端请求数据
  • 在客户端初始化WebView的同时,直接由native开始网络请求数据;
  • 当页面初始化完成后,向native获取其代理请求的数据。
  • asset存放离线包。

除此之外还有一些其他的优化手段:

  • DNS和链接慢:
    • 想办法复用客户端使用的域名和链接,可以让客户端复用使用的域名与链接。
    • DNS采用和客户端API相同的域名
    • DNS会在系统级别进行缓存,对于WebView的地址,如果使用的域名与native的API相同,则可以直接使用缓存的DNS而不用再发起请求图片。
  • 脚本执行慢:可以把框架代码拆分出来,在请求页面之前就执行好。
  • 后端处理慢:可以让服务器分trunk输出,在后端计算的同时前端也加载网络静态资源。

2、WebView与 js的交互

Android去调用JS的代码:

  1. 通过WebView的loadUrl()

  2. 通过WebView的evaluateJavascript()

JS调用Android代码的方法:

  1. 通过WebView的addJavascriptInterface()进行对象映射

  2. 通过 WebViewClient 的shouldOverrideUrlLoading ()方法回调拦截 url

  3. Android通过 WebChromeClient 的onJsAlert()、onJsConfirm()、onJsPrompt(方法回调分别拦截JS对话框(即上述三个方法),得到他们的消息内容,然后解析即可。

3、WebView的漏洞

Android WebView常见的安全漏洞和解决方案

4、JsBridge原理

JSBridge的原理

当然可以!UniApp是一种基于Vue.js的跨平台开发框架,它可以让开发者使用一套代码同时构建iOS、Android、H5等多个平台的应用程序。下面是一些关于UniApp的面试题及其答案: 1. 什么是UniApp? UniApp是一种基于Vue.js的跨平台开发框架,可以用于开发iOS、Android、H5等多个平台的应用程序。 2. UniApp有哪些特点? - 跨平台:使用一套代码可以构建多个平台的应用程序。 - 开发效率高:借助Vue.js的开发模式和组件化思想,开发者可以快速构建应用。 - 性能优秀:UniApp通过原生渲染和高效的通信机制,提供了接:UniApp可以使用Vue.js的生态系统,拥有大量插件和组件可供使用。 3. UniApp的底层原理是什么? UniApp的底层原理是基于WebView和Native渲染引擎的混合开发模式。在不同平台上,UniApp会将Vue代码转换为对应平台的代码,并通过WebView或Native渲染引擎来展示应用。 4. UniApp支持哪些平台? UniApp支持iOS、Android、H5、微信小程序、支付宝小程序、百度小程序、字节跳动小程序等多个平台。 5. 如何进行原生功能的扩展? UniApp提供了一套插件机制,可以通过编写原生插件来扩展应用的原生功能。开发者可以使用插件SDK来编写插件,并在UniApp中进行调用。 6. UniApp的优势和劣势是什么? - 优势:跨平台开发、开发效率高、性能优秀、生态丰富。 - 劣势:对于一些特定的原生功能,可能需要编写原生插件来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值