webview优化示例

维护人:戴荔春 (6016)

说明

一些Android机型上,webview创建和显示时会有比较严重的性能问题,本文针对这种问题进行优化探讨

目录

前言

本文适用范围

本文探讨的Webview优化主要是针对Android系统的,因为有些低版本的Android系统对webview的支持不是很好(比如4.0-4.3),一般来说iOS系统无法优化(iOS有时候不优化效果要比优化好)

参考来源

前人栽树,后台乘凉,本文参考了以下来源

为何优化

为何要进行webview性能优化

需要优化的首要原因是: Android中webview性能低下,特别是一些低版本中(比如4.0-4.3系统),对webview的支持不足。导致每次创建页面时会等待大量时间或存在白屏现象。

另外,优化后还有一个好处就是减少重复的创建与销毁,以前打开页面的方法都是 创建页面->打开。 然后关闭页面->销毁。每次都得这样,较为浪费性能,优化有可以更好的复用

优化适用场景

由于优化是通过复用模板页面(header,sub)来实现的,所以一般如下

如何优化

优化原理

Android webview优化主要是基于预加载的模版页面通过loadUrl加载需要打开的页面来实现,原理如下

通过webview优化打开页面总流程

获取页面模板流程

通过模板加载页面流程

优化代码实现

目前优化方案已经集成到框架中,便于使用,这里介绍基于框架的使用,如果想要自定义实现的,可以根据原理图和参考showcase源码实现

基于框架的前期准备

由于优化代码是封装进入框架中的,所以需要集成框架,另外请注意如下要点

基于框架的代码使用

已经封装的尽量简单了,只需要遵循如下步骤

示例demo

webview优化的示例

优化前后对比

有对比才有效果,这里分别用Android 5.0华为荣耀7以及其它设备做了优化前后的对比效果分析

gif可能由于帧率问题,效果会没有真机上明显。另外可以像showcase里的测试页面一样,自定义标题,这样优化效果更好

优化前

优化后

优化后的示例demo

目前框架showcase中就用到了最新的优化效果,参考 showcase示例