亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

使用 WebView 時(shí),我們通常會(huì)重寫(xiě)以下方法:

shouldOverrideUrlLoading()
onPageStarted()
onPageFinished()

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

1、如果是固定的地址:

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

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

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

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

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

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

二、開(kāi)啟WebView 直接loadUrl(其實(shí)就是少了shouldOverrideUrlLoading()):

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

onPageStarted()-> onPageFinished()

loadUrl()加載地址時(shí),一般不會(huì)觸發(fā)shouldOverrideUrlLoading(),一旦觸發(fā)了,就說(shuō)明這是一個(gè)重定向地址。

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

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

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

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

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

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

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

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

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

補(bǔ)充知識(shí):webview多次調(diào)用onPageFinished問(wèn)題

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

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

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

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

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)致的多次加載的問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android彈出dialog后無(wú)法捕捉back鍵的解決方法

    Android彈出dialog后無(wú)法捕捉back鍵的解決方法

    這篇文章主要為大家詳細(xì)介紹了Android彈出dialog后無(wú)法捕捉back鍵的解決方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Android實(shí)現(xiàn)Ant Design 自定義表單組件

    Android實(shí)現(xiàn)Ant Design 自定義表單組件

    Ant Design 組件提供了Input,InputNumber,Radio,Select,uplod等表單組件,下面通過(guò)本文給大家詳細(xì)介紹Android實(shí)現(xiàn)Ant Design 自定義表單組件,需要的的朋友參考下吧
    2017-06-06
  • Android三種雙屏異顯實(shí)現(xiàn)方法介紹

    Android三種雙屏異顯實(shí)現(xiàn)方法介紹

    現(xiàn)在越來(lái)越多的Android設(shè)備有多個(gè)屏幕,雙屏異顯應(yīng)用場(chǎng)景最多的應(yīng)該就是類似于收銀平臺(tái)那種設(shè)備,在主屏上店員能夠?qū)c(diǎn)商品進(jìn)行選擇錄入,副屏則是展示給我們的賬單詳情,但是它只通過(guò)了一個(gè)軟件系統(tǒng)就實(shí)現(xiàn)了雙屏異顯這個(gè)功能,而Presentation正是這其中的關(guān)鍵
    2023-01-01
  • Notification與NotificationManager詳細(xì)介紹

    Notification與NotificationManager詳細(xì)介紹

    在Android系統(tǒng)中,發(fā)一個(gè)狀態(tài)欄通知還是很方便的。下面我們就來(lái)看一下,怎么發(fā)送狀態(tài)欄通知,狀態(tài)欄通知又有哪些參數(shù)可以設(shè)置
    2012-11-11
  • 2014值得推薦的10個(gè)移動(dòng) Web 應(yīng)用程序開(kāi)發(fā)框架

    2014值得推薦的10個(gè)移動(dòng) Web 應(yīng)用程序開(kāi)發(fā)框架

    今天這篇文章向大家推薦10大優(yōu)秀的移動(dòng) Web 開(kāi)發(fā)框架,幫助開(kāi)發(fā)者更加高效的開(kāi)發(fā)移動(dòng)Web應(yīng)用。
    2014-08-08
  • Android關(guān)于獲取時(shí)間的記錄(小結(jié))

    Android關(guān)于獲取時(shí)間的記錄(小結(jié))

    這篇文章主要介紹了Android關(guān)于獲取時(shí)間的記錄(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Android實(shí)現(xiàn)的RecyclerView適配器

    Android實(shí)現(xiàn)的RecyclerView適配器

    這篇文章主要介紹了Android實(shí)現(xiàn)的RecyclerView適配器的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用Android,感興趣的朋友可以了解下
    2021-03-03
  • 詳解ListView中多種item的實(shí)現(xiàn)方式

    詳解ListView中多種item的實(shí)現(xiàn)方式

    這篇文章主要給大家介紹了關(guān)于ListView中多種item的實(shí)現(xiàn)方式,文中通過(guò)示例代碼介紹的很詳細(xì),有需要的朋友們可以參考借鑒,下面來(lái)一起看看吧。
    2016-12-12
  • Android中ImageView無(wú)法居中的問(wèn)題解決方法

    Android中ImageView無(wú)法居中的問(wèn)題解決方法

    做UI布局,尤其是遇到比較復(fù)雜的多重LinearLayout嵌套,常常會(huì)被一些比較小的問(wèn)題困擾上半天,比如今天在使用ImageView的時(shí)候,想讓其居中顯示,可是無(wú)論怎樣設(shè)置layout_gravity屬性,都無(wú)法達(dá)到效果
    2013-06-06
  • 大型項(xiàng)目里Flutter測(cè)試應(yīng)用實(shí)例集成測(cè)試深度使用詳解

    大型項(xiàng)目里Flutter測(cè)試應(yīng)用實(shí)例集成測(cè)試深度使用詳解

    這篇文章主要為大家介紹了大型項(xiàng)目里Flutter測(cè)試應(yīng)用實(shí)例集成測(cè)試深度使用詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12

最新評(píng)論