Что действительно делает stopLoading()?

Да, я знаю документацию для stopLoading() говорит: "Остановляет текущую нагрузку".

Но когда я пытаюсь использовать его, чтобы перестать загружать текущую прогрессирующую страницу перед загрузкой новой, она не выглядит по желанию:

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

Как вы можете видеть в журнале, WebViewClient.onPageFinished() для первого loadUrl() вызывается, несмотря на то, что WebView.stopLoading() был вызван о на 1 секунду раньше.

Почему это?

Что делает stopLoading() действительно?

Ответ 1

you786 прав:

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

Для этого TODO, которые они отметили в остальных сообщениях, сначала будут обработаны. Так что результаты в том, что мне просто интересно: при остановке загрузки в

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

WebView на самом деле не останавливается, вместо этого он загружает свою собственную страницу 404 (что бы она обычно делала, если вы не вызываете 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/