WebView相关面试题

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的原理

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值