最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于WebView 重定向行為導(dǎo)致的多次加載的問題

 更新時間:2020年03月25日 09:32:52   作者:房子D  
這篇文章主要介紹了關(guān)于WebView 重定向行為導(dǎo)致的多次加載的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

使用 WebView 時,我們通常會重寫以下方法:

shouldOverrideUrlLoading()
onPageStarted()
onPageFinished()

一、WebView 內(nèi)部點擊連接,他們的回調(diào)順序是這樣的:

1、如果是固定的地址:

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

shouldOverrideUrlLoading()由于它要提供給APP選擇加載網(wǎng)頁環(huán)境的機會,所以只要是網(wǎng)頁上地址請求,都會獲取到。

2、如果是重定向地址,在跳轉(zhuǎn)到目的地址之前會不斷重定向,每一次重定向都會回調(diào):

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

那么一個正常的重定向地址,方法的執(zhí)行順序就是:

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

二、開啟WebView 直接loadUrl(其實就是少了shouldOverrideUrlLoading()):

1、 如果是目的地址,那么方法的執(zhí)行順序是:

onPageStarted()-> onPageFinished()

loadUrl()加載地址時,一般不會觸發(fā)shouldOverrideUrlLoading(),一旦觸發(fā)了,就說明這是一個重定向地址。

2、 如果是重定向地址,方法的執(zhí)行順序就是:

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

所以,如果我們想要自定義進度條,就要考慮如何避免重定向行為導(dǎo)致的多次加載問題:

設(shè)置一個Boolean全局變量flag,

在onPageStarted()中設(shè)置為true,若加載樣式?jīng)]有開啟,就開啟進度條等加載樣式;

在onPageFinished()中檢測,如果為true,就說明已經(jīng)是目的地址,可以關(guān)閉加載樣式,如果是false,就不做處理,繼續(xù)等待;

在shouldOverrideUrlLoading()中,設(shè)置為false,若加載樣式?jīng)]有開啟,就開啟進度條等加載樣式

這樣就可以很好的控制加載樣式和網(wǎng)址跳轉(zhuǎn)之間的關(guān)系了。

或參考:How to listen for a WebView finishing loading a URL?

補充知識:webview多次調(diào)用onPageFinished問題

項目中遇到了webview多次調(diào)用onPageFinished問題,相關(guān)文章比較多,但是很多是無效的,甚至有些需要服務(wù)器修改。

直到谷歌到https://stackoverflow.com/questions/3149216/how-to-listen-for-a-webview-finishing-loading-a-url

才發(fā)現(xiàn)有用的方案

其中這個方法最終優(yōu)雅得解決了我的問題

public void onPageFinished(WebView view, String url) {
      super.onPageFinished(view, url);
      if (m_webView.getProgress() == 100) {
        progressBar.setVisibility(View.GONE);
        m_webView.setVisibility(View.VISIBLE);
      }
    } 

以上這篇關(guān)于WebView 重定向行為導(dǎo)致的多次加載的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評論

黎城县| 长白| 彭州市| 韶山市| 伊宁县| 吴江市| 开化县| 大邑县| 横山县| 阜新市| 闸北区| 法库县| 濉溪县| 淮滨县| 兖州市| 麻城市| 广东省| 凌源市| 安康市| 五莲县| 衡阳市| 通化县| 玛曲县| 威信县| 汉川市| 宁安市| 昂仁县| 永定县| 沂源县| 磴口县| 瑞丽市| 沛县| 芒康县| 芦溪县| 麦盖提县| 崇礼县| 武穴市| 清苑县| 湖北省| 永靖县| 新源县|