博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
WebView监听网页加载成功与失败
阅读量:2123 次
发布时间:2019-04-30

本文共 1095 字,大约阅读时间需要 3 分钟。

问题说明:

现在好多APP在应用中会内嵌webview,好多时候需要监听webview是否加载成功与失败。当加载成功的时候会回调WebViewClient的onPageFinished方法;当加载失败的时候会回调WebViewClient的onReceived方法。但问题是在加载失败的时候同样会回调onPageFinished方法。

看过一些StackOverFlow上面的文章,说可以通过WebChromeClient的onProgressChanged方法,当判断进度到100的时候表示加载成功,但其实加载失败的时候同样进度会到100,所以也是不行的。

在公司项目开发过程中也遇到了这样的问题,当时找到2种解决这个问题的方法。

解决思路:

方法一:利用原生回调方法

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是, 这个在第一次打开app之前肯定是保存在本地的,或者是从登陆页面获取的,而加载成功以后的首页面就会变成 ,这样我们就可以通过onPageFinished方法中转入的url来判断是否是第一次加载成功后的页面了。

url.contains("#");

转载地址:http://fldrf.baihongyu.com/

你可能感兴趣的文章
【Java】【28】提高List的removeAll方法的效率
查看>>
【JS】【31】读取json文件
查看>>
OpenSSL源代码学习[转]
查看>>
Spring下载地址
查看>>
google app api相关(商用)
查看>>
linux放音乐cd
查看>>
GridView+存储过程实现'真分页'
查看>>
flask_migrate
查看>>
解决activemq多消费者并发处理
查看>>
UDP连接和TCP连接的异同
查看>>
hibernate 时间段查询
查看>>
java操作cookie 实现两周内自动登录
查看>>
Tomcat 7优化前及优化后的性能对比
查看>>
Java Guava中的函数式编程讲解
查看>>
Eclipse Memory Analyzer 使用技巧
查看>>
tomcat连接超时
查看>>
谈谈编程思想
查看>>
iOS MapKit导航及地理转码辅助类
查看>>
检测iOS的网络可用性并打开网络设置
查看>>
简单封装FMDB操作sqlite的模板
查看>>