影响WebView加载网页慢的因素是多种的,要根据自身情况灵活组合使用,下面说几个可以参考的优化项

1、使把图片加载放在最后来加载渲染 

先关闭图片的导入

_settings.setBlockNetworkImage(true);   //使把图片加载放在最后来加载渲染

然后在onPageFinished事件中,再打开图片的导入

@Override
public void onPageFinished(WebView pView,String pURL){
super.onPageFinished(pView,pURL);
pView.getSettings().setBlockNetworkImage(false); //解除图片数据阻止
//可以关闭进度框之类的信息
}

这一项对于图片较多的页面,效果最明显,可以有效加块页面导入速度

2、开启缓存

webView数据缓存分为两种,AppCache和DOM Storage(Web Storage)
二者都推荐开启,即可以加快网页的加载性能,又可以减少网页错误概率

_settings.setDomStorageEnabled(true);
_settings.setAppCacheEnabled(true);

同时,根据网络情况,设置一下缓存模式,也可以不设置,使用默认模式

if(NetworkHelper.isNetworkAvaiable(pFragment.getContext())){
_settings.setCacheMode(WebSettings.LOAD_DEFAULT); // 如果联网根据cache-control决定是否从网络上取数据
}else{
_settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); //先查找缓存,没有的情况下从网络获取。
}

// 可以读取文件缓存(manifest生效)

_settings.setAllowFileAccess(true);

3、开启硬件加速

硬件加速可以在一下四个级别开启或关闭:
(1)Application
(2)Activity
(3)Window
(4)View
1、Application级别
在应用程序AndroidManifest.xml文件为application标签添加如下的属性即可为整个应用程序开启硬件加速:
<application android:hardwareAccelerated="true" ...>
2、Activity级别
可以控制每个activity是否开启硬件加速,只需在activity元素中添加android:hardwareAccelerated属性即可办到。
比如下面的例子,在application级别开启硬件加速,但在某个activity上关闭硬件加速。
<application 
    android:hardwareAccelerated="true">
    <activity ... />
    <activity android:hardwareAccelerated="false" />
</application>
3、Window级别
如果需要更小粒度的控制,可以使用如下代码开启某个window的硬件加速:
getWindow().setFlags(

    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
    WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
4、View级别
可以在运行时用以下的代码关闭单个view的硬件加速:
testView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);