关于WebView重定向⾏为导致的多次加载的问题
使⽤ WebView 时,我们通常会重写以下⽅法:
shouldOverrideUrlLoading()
整式及其加减
onPageStarted()
onPageFinished()
⼀、WebView 内部点击连接,他们的回调顺序是这样的:
1、如果是固定的地址:
shouldOverrideUrlLoading() -> onPageStarted()-> onPageFinished()
shouldOverrideUrlLoading()由于它要提供给APP选择加载⽹页环境的机会,所以只要是⽹页上地址请求,都会获取到。2、如果是重定向地址,在跳转到⽬的地址之前会不断重定向,每⼀次重定向都会回调:
redirection: onPageStarted()->shouldOverrideUrlLoading()->onPageFinished()
那么⼀个正常的重定向地址,⽅法的执⾏顺序就是:端午节的来历30字左右
shouldOverrideUrlLoading()->redirection -> … ->redirection ->onPageStarted()->onPageFinished()
⼆、开启WebView 直接loadUrl(其实就是少了shouldOverrideUrlLoading()):
苏州工资1、如果是⽬的地址,那么⽅法的执⾏顺序是:
onPageStarted()-> onPageFinished()
loadUrl()加载地址时,⼀般不会触发shouldOverrideUrlLoading(),⼀旦触发了,就说明这是⼀个重定向地址。
2、如果是重定向地址,⽅法的执⾏顺序就是:
怎样修改微信支付密码redirection -> … -> redirection ->onPageStarted()->onPageFinished()
所以,如果我们想要⾃定义进度条,就要考虑如何避免重定向⾏为导致的多次加载问题:
设置⼀个Boolean全局变量flag,
在onPageStarted()中设置为true,若加载样式没有开启,就开启进度条等加载样式;一个口一个秦是什么字
野炊游戏
在onPageFinished()中检测,如果为true,就说明已经是⽬的地址,可以关闭加载样式,如果是fal,就不做处理,继续等待;
在shouldOverrideUrlLoading()中,设置为fal,若加载样式没有开启,就开启进度条等加载样式
这样就可以很好的控制加载样式和⽹址跳转之间的关系了。
或参考:到底什么是爱情
补充知识:webview多次调⽤onPageFinished问题
项⽬中遇到了webview多次调⽤onPageFinished问题,相关⽂章⽐较多,但是很多是⽆效的,甚⾄有些需要服务器修改。
才发现有⽤的⽅案
其中这个⽅法最终优雅得解决了我的问题
public void onPageFinished(WebView view, String url) {
if (Progress() == 100) {
progressBar.tVisibility(View.GONE);
m_webView.tVisibility(View.VISIBLE);
}
}
以上这篇关于WebView 重定向⾏为导致的多次加载的问题就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
>不置可否是什么意思