Android-Daily-Interview icon indicating copy to clipboard operation
Android-Daily-Interview copied to clipboard

2019-08-16:谈谈如何对WebView进行优化?

Open Moosphan opened this issue 4 years ago • 11 comments

Moosphan avatar Aug 16 '19 00:08 Moosphan

我先来,最简单的,设置先加载文字,然后在加载图片,会快一点😂,然后就是体验问题了,你可以自定义一些loading让加载的时候好看一点。

hongcwamazing avatar Aug 16 '19 01:08 hongcwamazing

这是美图webview优化我感觉这是个方法 https://mp.weixin.qq.com/s/-WceVvEKp8bKtIJQsD3Srw

zhaoerlei1989 avatar Aug 16 '19 01:08 zhaoerlei1989

太高深的我不懂,但我晓得webview木有加载超时的回调监听,需要自己开定时器哦。

SuDreamer avatar Aug 16 '19 02:08 SuDreamer

这是美图的WebView我优化感觉这的英文个方法 https://mp.weixin.qq.com/s/-WceVvEKp8bKtIJQsD3Srw

gabyallen avatar Aug 16 '19 06:08 gabyallen

可以试下以上的方法进行优化:

  1. 单/多进程化:webView在独立的进程里面,那么WebView的进程崩溃不会影响到主进程运行;同时WebView的安 全漏洞也很难影响到主进程;如果是多进程的话,可以使用WebView的容器池,有二次秒开的作用;不过缺点就是需要你做好和WebView的跨进程通讯了

  2. 网络优化:我们可以让WebView的host和客户端的host保持一致,那么就达到复用DNS缓存的效果;如果客户端有针对网络请求进行了优化,那么可以让WebView的全部网络请求托管给客户端

  3. H5离线包:这个是手Q的H5方案之一,让客户端提前去下载离线的H5数据包,WebView只需要加载本地H5数据包即可,这么做不仅可以避免一些http的劫持,而且跳过了WebView的建立TCP连接和H5、CCS等数据下载的过程,直接开始UI渲染,大大提高了WebView的效率

Fritz-Xu avatar Aug 18 '19 14:08 Fritz-Xu

用户体验方面,可以在顶部显示一个一个progress,显示网页加载进度,而不是一个白屏呈现给用户看。

设置一个全局的WebView,减少WebView初始化的时间,避免后续操作的堵塞

chenqi5256969 avatar Aug 19 '19 01:08 chenqi5256969

1、webview白屏优化 2、由于webview使用的时候存在大量的内存泄漏情况,单独开一个进程显示webview内容

MrShuHong avatar Aug 22 '19 05:08 MrShuHong

chrome tabs据说要比webview好,可以在fallback时使用webview

weikano avatar Sep 02 '19 13:09 weikano

webview加载的大致分为三个阶段: 1、webview的创建和初始化;2、网络链接、下载资源,比如js、css以及图片等;3、界面的绘制; 第一个阶段,白屏,第二个阶段loading状态,第三个阶段展示;

针对第一个阶段优化: 1、APP打开先创建一个空的webview:第一次打开webview比第二次打开webview慢,因为webview打开之后会创建一些公用的服务,第二次再次打开不用再次创建

针对第二阶段优化: 1、DNS域名优化:webview的网络请求以及资源的链接的域名,和项目api所有域名一致,节省域名解析的解析的时间; 2、js、css以及图片等资源文件要压缩之后,再使用:减少资源下载时间; 3、部分资源可以存放在本地,或者通过热更的方式进行下载; 4、部分网络请求在webview创建的时候,就可以开始调用;

xiaoyunfei avatar Aug 13 '20 06:08 xiaoyunfei

  • 进度条优化,加载进度未80%时,隐藏进度条
  • 标题优化,避免在标题栏暴露加载地址
  • 使用缓存,提高加载速度
  • 使用https和httpdns,降低运营商劫持率、减少网络延迟、减少请求数据流
  • 使用独立进程,独享更大的内存空间,即使加载网络出错导致应用崩溃也不会影响到主进程
  • 使用全局代理免流访问

优秀文章

如何设计一个优雅健壮的Android WebView?(上) 如何设计一个优雅健壮的Android WebView?(下)

aositeluoke avatar Dec 06 '20 07:12 aositeluoke