shouldOverrideUrlLoading一定在onPageStarted之前调用吗?答案是:不一定。
当我们在shouldOverrideUrlLoading方法中通过view.loadUrl加 return false;的方式加载一个页面时:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return false;
}
则回调执行顺序如下:
onPageStarted(http://www.taobao.com)
-> onPageStarted(https://www.taobao.com)
-> shouldOverrideUrlLoading(https://www.taobao.com)
-> onPageFinished(https://www.taobao.com)
如果改成view.loadUrl(url);加return true; 则回调执行顺序如下:
onPageStarted(http://www.taobao.com)
-> onPageStarted(https://www.taobao.com)
-> shouldOverrideUrlLoading(https://www.taobao.com)
-> onPageFinished(https://www.taobao.com)
-> onPageStarted(https://www.taobao.com)
-> onPageFinished(https://www.taobao.com)
可以发现当返回false时,onPageFinished会少执行一次,这样无法保证标识重定向flag的准确性
如果是点击页面,触发<link>标签,则对应的回调顺序如下:
shouldOverrideUrlLoading(https://www.taobao.com)
-> onPageStarted(https://www.taobao.com)
-> onPageFinished(https://www.taobao.com)
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有