2012-07-24 12 views
11

Sì, lo so la documentazione per stopLoading() dice "Arresta il carico di corrente."Cosa fa veramente stopLoading()?

Ma quando cerco di usarlo per fermare il caricamento attualmente progredendo pagina prima di caricare una nuova, non sembra comportarsi as desired:

07-24 12:53:30.177: V/WebView.loadUrl: http://www.google.com 
07-24 12:53:30.227: V/WebViewClient.onPageStarted: http://www.google.com 

===> WebView.stopLoading() called here <==== 

07-24 12:53:31.917: V/WebView.loadUrl: http://www.stackoverflow.com 
07-24 12:53:32.697: V/WebViewClient.onPageFinished: http://www.google.com 

07-24 12:53:32.767: V/WebViewClient.onPageStarted: http://www.stackoverflow.com 
07-24 12:53:33.587: V/WebViewClient.onPageFinished: http://www.stackoverflow.com 

Come si può vedere nel registro, WebViewClient.onPageFinished() per la prima loadUrl() viene chiamato nonostante il fatto che è stato chiamato WebView.stopLoading() circa 1 secondo in precedenza.

Perché è quello?

Che cosa fa veramente stopLoading()?

+0

sto indovinando solo imposta un flag per raccontare la WebView di non eseguire qualsiasi dei ganci come onPageFinished, ecc non credo sarà effettivamente arrestare la connessione di rete. – you786

risposta

3

you786 ha ragione:

public void stopLoading() { 
    checkThread(); 
    // TODO: should we clear all the messages in the queue before sending 
    // STOP_LOADING? 
    switchOutDrawHistory(); 
    mWebViewCore.sendMessage(EventHub.STOP_LOADING); 
} 

Per questo TODO hanno segnato nei messaggi restanti otterrebbe trattati in prima. Quindi, che si traduce in quello che sono semplicemente curiosi di scoprire: quando l'arresto di carico in

WebViewClient.onReceivedError(WebView view, int errorCode, String description, String failingUrl) 

Il WebView non si ferma in realtà, invece carica la propria pagina 404 (quello che normalmente avrebbe fatto se non si chiama StopLoading ()):

11-07 16:30:01.112: I/MainActivity(19189): Loading: http://92.53.45.42 
11-07 16:30:01.253: V/MainActivity.WebViewClient(19189): SHOULD_INTERCEPT_REQUEST: http://92.53.45.42/ 
11-07 16:30:01.347: V/MainActivity.WebViewClient(19189): PAGE_STARTED: http://92.53.45.42/ 
11-07 16:30:01.347: V/MainActivity.WebChromeClient(19189): ON_PROGRESS_CHANGED: 10 
11-07 16:30:01.347: V/MainActivity.WebViewClient(19189): LOAD_RESOURCE: http://92.53.45.42/ 
11-07 16:30:25.292: I/GATE(19189): <GATE-M>DEV_ACTION_ERROR</GATE-M> 
11-07 16:30:25.300: E/MainActivity.WebViewClient(19189): (CONNECT - Failed to connect to the server) -> http://92.53.45.42/ 
11-07 16:30:25.300: W/MainActivity.WebViewClient(19189): loading stopped..: 
11-07 16:30:25.300: V/MainActivity.WebViewClient(19189): PAGE_STARTED: http://92.53.45.42/ 
11-07 16:30:25.300: I/MainActivity.WebViewClient(19189): PAGE_FINISHED: http://92.53.45.42/ 
11-07 16:30:25.339: I/MainActivity.WebChromeClient(19189): ON_RECEIVED_TITLE: Webseite nicht verfügbar 
11-07 16:30:25.339: V/MainActivity.WebChromeClient(19189): GET_VISITED_HISTORY 
11-07 16:30:25.339: I/GATE(19189): <GATE-M>DEV_ACTION_COMPLETED</GATE-M> 
11-07 16:30:25.339: V/MainActivity.WebChromeClient(19189): ON_PROGRESS_CHANGED: 100 
11-07 16:30:25.339: I/MainActivity.WebViewClient(19189): PAGE_FINISHED: http://92.53.45.42/