2012-07-24 22 views
11

Tak, wiem, że dokumentacja stopLoading() mówi „Zatrzymuje bieżące obciążenie.Co naprawdę robi funkcja StopLoading()?

Ale gdy próbuję go użyć, aby zatrzymać ładowanie obecnie postępuje stronę przed załadowaniem nowego, nie wydaje się zachowywać 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 

Jak widać w dzienniku, WebViewClient.onPageFinished() dla pierwszego loadUrl() zostanie wywołany pomimo faktu, że WebView.stopLoading() nazwano o 1 sekundy wcześniej.

Dlaczego tak jest?

Co naprawdę robi stopLoading()?

+0

Zgaduję, że po prostu ustawia flagę, aby WebView nie uruchamiał żadnego z haków, takich jak onPageFinished, itp. Nie sądzę, że to faktycznie zatrzyma połączenie sieciowe. – you786

Odpowiedz

3

you786 ma rację:

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

Z tego TODO one oznaczone w pozostałych komunikatów dostanie przetwarzane w pierwszej kolejności. Tak, że wyniki w czym jestem po prostu ciekawy temat: po zatrzymaniu obciążenia w

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

WebView naprawdę nie zatrzymuje się, a nie ładuje własną stronę 404 (co normalnie byłoby zrobić, jeśli nie nazywamy 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/