美文网首页
WebView 重定向行为导致的多次加载问题

WebView 重定向行为导致的多次加载问题

作者: 问心2018 | 来源:发表于2018-10-11 15:54 被阅读0次

    一、WebView 内部点击连接,他们的回调顺序是这样的:

    1、如果是固定的地址:

    shouldOverrideUrlLoading() -> onPageStarted()-> onPageFinished()

    2、如果是重定向地址,在跳转到目的地址之前会不断重定向,每一次重定向都会回调:

    redirection: onPageStarted()->shouldOverrideUrlLoading()->onPageFinished()

    那么一个正常的重定向地址,方法的执行顺序就是:

    shouldOverrideUrlLoading()->redirection -> … ->redirection ->onPageStarted()->onPageFinished()

    二、开启WebView 直接loadUrl(其实就是少了shouldOverrideUrlLoading()):

    1、 如果是目的地址,那么方法的执行顺序是:

    onPageStarted()-> onPageFinished()

    loadUrl()加载地址时,一般不会触发shouldOverrideUrlLoading(),一旦触发了,就说明这是一个重定向地址。

    2、 如果是重定向地址,方法的执行顺序就是:

    redirection -> … -> redirection ->onPageStarted()->onPageFinished()

    三,解决方案

    设置一个Boolean全局变量flag,

    在onPageStarted()中设置为true,若加载样式没有开启,就开启进度条等加载样式;
    在onPageFinished()中检测,如果为true,就说明已经是目的地址,可以关闭加载样式,如果是false,就不做处理,继续等待;
    在shouldOverrideUrlLoading()中,设置为false,若加载样式没有开启,就开启进度条等加载样式
    这样就可以很好的控制加载样式和网址跳转之间的关系了。

    相关文章

      网友评论

          本文标题:WebView 重定向行为导致的多次加载问题

          本文链接:https://www.haomeiwen.com/subject/pyvbaftx.html