对于Android开发人员,也许使用WebView已经没有太大优化空间,更多的优化要来源于前端人员,但是我们作为WebView的调用者,还是要为优化作出最后一份努力,下面几条建议就是改善WebView加载的良方。
1. 提高渲染的优先级
通过调用webView.getSettings().setRenderPriority(RenderPriority.HIGH); 能够显著提高加载速度。
图片延迟加载
先用 webView.getSettings().setBlockNetworkImage(true); 将图片下载阻塞,然后在浏览器的OnPageFinished事件中设置 webView.getSettings().setBlockNetworkImage(false); 通过图片的延迟载入,让网页能更快地显示。
if(Build.VERSION.SDK_INT >= 19)
{
webView.getSettings().setLoadsImagesAutomatically(true);
} else
{
webView.getSettings().setLoadsImagesAutomatically(false);
}
WebView的WebViewClient实例中的onPageFinished()方法添加如下代码:
@Override
public void onPageFinished(WebView view, String url)
{
if(!webView.getSettings().getLoadsImagesAutomatically())
{
webView.getSettings().setLoadsImagesAutomatically(true);
}
}开启WebView的缓存功能可以减少对服务器资源的请求,一般使用默认缓存策略就可以了。
//设置 缓存模式
webView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
// 开启 DOM storage API 功能,设置可以使用localStorage
webView.getSettings().setDomStorageEnabled(true);
// 应用可以有缓存
settings.setAppCacheEnabled(true);
String appCaceDir =this.getApplicationContext().getDir(“cache”, Context.MODE_PRIVATE).getPath();
settings.setAppCachePath(appCaceDir);
settings.setCacheMode(WebSettings.LOAD_DEFAULT); // 默认使用缓存
settings.setAppCacheMaxSize(8*1024*1024); //缓存最多可以有8M
settings.setAllowFileAccess(true); // 可以读取文件缓存(manifest生效)