登录

去注册

登录

注册

去登录

注册

每日一问 WebView 相关你了解多少?

xiaoyang   2019-10-28   收藏

WebView 这个控件在日常开发中真是又爱又恨,放佛用起来很简单,但是坑也不少...

今天的问题是:

  1. 常见的 native 与 webview 通信方案有哪些?各有什么优缺(特)点?
  2. WebView 打开页面加速的方案有哪些?
  3. WebView 如何合理的处理 https 相关的页面?

随便回答上面哪个哈~~~

3

对第二点有点想法,因为学过一点前端。所以我认为WebView的加载速度的提升可以有三个方面:

  1. 网页方面
  2. WebView的加载方式方面

WebView的加载方式中,我第一反应是使用几个常用的子类配合使用(WebSettings、WebChromeClient、WebViewClient),先进行html+css的渲染,在加载js,最后在加载图片。

我个人认为能有效的提升页面加载速度的还是从前端方面入手,使用懒加载,延迟加载部分js等等。你前端优化不好WebView也无力回天,前端优化好了,WebView的加载速度在差也差不到哪去。

说了两端,剩下的一个应该是传输(管道)问题了。这个只是理论,我想到网络传输的速度问题第一个想到的就是域名解析,我想到的是在移动端使用HTTPDNS。
如何利用HTTPDNS降低DNS解析开销

回复
3

1, 通过 JsBridge 开源方案,通过原生方式。
2, 之前为了提高页面打开速度,使用到了 CacheWebView 这个开源方案,把页面所需要的资源提前缓存了下来。
3, 在 gp 上线的项目都是在 onReceivedSslError 方法里 proceed 处理,不然违反政策。

回复
1

谈谈第二点吧,
1.学百度提前创建webview;
2.提前把webview的html下载下来,加载的时候直接用;
3.图片的加载替换成Glide来加载,有缓存等。

回复
xiaweizi : @xuzhenhao 

同问

2019-10-25 回复
xujiafeng : @xuzhenhao 

拦截请求来做,具体参考百度。。这种方法也能够解决想用本地图片替换网络图片的需求

2019-10-23 回复
xuzhenhao : @xujiafeng 

webview里面的图片用Glide加载这个要怎么设置?

2019-10-23 回复
0
  1. *通过原生 shouldOverrideUrlLoading 拦截url,再根据不同的url进行处理
       *注入接口@JavascriptInterface,使用js来调用本地接口中的方法
    
  2. 加速方案楼上大哥也写了,这里提供一个美团的 https://tech.meituan.com/2017/06/09/webviewperf.html ,另外我们这边的实现方案是:如果h5文章的模板都差不多的话,比如新闻资讯类的,还可以干脆直接打css,js,template在包里,需要更新样式的时候提前下载模版保存再本地,使用shouldInterceptRequest 进行加载,节省这部分的时间。打开webview的时候,js调用本地方法下载文章数据,再用本地的模版渲染,图片再做一下懒加载,这样压力就来到了前端开发这边,成功甩锅
  3. 参考楼上onReceivedSslError
回复

删除留言

确认删除留言,会导致相关评论丢失?

取消 确定