方法一:利用原生回调方法
private boolean isSuccess = false;
private boolean isError = false;
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if (!isError) {
isSuccess = true;
//回调成功后的相关操作
}
isError = false;
}
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
isError = true;
isSuccess = false;
//回调失败的相关操作
}
原理总结:在访问失败的时候会首先回调onReceivedError,然后再回调onPageFinished。
方法二:给url打tag
这个方法不是适用所有人的,我当时可以用到这样的思路,主要是业务中只需要判断第一次的网页是否加载成功,只要第一次加载成功后后面的都可以交给html页面来解决加载状态。而加载成功前后的url是不一样的,举个例子:
首先启动webview时用到的url是http://www.abcd.com/shop, 这个在第一次打开app之前肯定是保存在本地的,或者是从登陆页面获取的,而加载成功以后的首页面就会变成http://www.abcd.com/shop#home ,这样我们就可以通过onPageFinished方法中转入的url来判断是否是第一次加载成功后的页面了。
url.contains("#");