我不得不最近解决这个问题,并绕过它:我注意到,加载缓存的内容时;在onReceivedError()之前,WebViewClient的onLoadResource()被多次调用。当没有缓存的内容时; onLoadResource()仅在onReceivedError()之前调用一次。
我用这种行为差异来设置一个在onReceivedError()中使用的标志来确定我是否应该显示我的错误视图。
E.g:
public class CustomWebViewClient extends WebViewClient {
private int onLoadResourceCount = 0;
@Override
public void onLoadResource(WebView view, String url) {
super.onLoadResource(view, url);
onLoadResourceCount++;
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
if (onLoadResourceCount <= 1) {
showErrorView();
}
}
}
编辑:这是一个黑客,绝不有关工作API很好的替代品......但是这是我所能做的缺乏一个最好的。