これは、トピックについて開始した Google グループのディスカッションからのクロスポストです。
私はさらに調査を行い、何が起こっているのかをすべて理解していると思います。
これが私のものWebViewClient
です:
public class MyWebViewClient extends WebViewClient {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
System.out.println("onPageStarted: " + url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView webView, String url) {
System.out.println("shouldOverrideUrlLoading: " + url);
webView.loadUrl(url);
return true;
}
@Override
public void onPageFinished(WebView webView, String url) {
System.out.println("onPageFinished: " + url);
}
}
サーバーから次の URL リダイレクトがあります。
http://example.com/resource -> http://example.com/user-name/resource
http://example.com/logout.jsp -> http://example.com/login/logout
http://example.com/login/logout -> http://example.com/login
これらの URL は、私が管理していないサーバーの一部であるため、その動作に対処する必要があります。
これがロードからの出力ですhttp://example.com/resource
onPageStarted: http://example.com/resource
onPageStarted: http://example.com/user-name/resource
shouldOverrideUrlLoading: http://example.com/user-name/resource
onPageFinished: hhttp://example.com/user-name/resource
この時点で、私WebView
のコンテンツは空白です。onPageFinished
コンテンツを取得するには、1 秒後まで待たなければなりません。
onPageStarted: http://example.coms/user-name/resource
onPageFinished: http://example.com/user-name/resource
これがロードからの出力ですhttp://example.com/logout.jsp
onPageStarted: http://example.com/logout.jsp
onPageStarted: http://example.com/login/logout
shouldOverrideUrlLoading: http://example.com/login/logout
onPageFinished: http://example.com/login/logout
onPageStarted: http://example.com/login/logout
onPageStarted: http://example.com/login
shouldOverrideUrlLoading: http://example.com/login
onPageFinished: http://example.com/login
繰り返しますが、この時点で、私WebView
のページは空白です。onPageFinished
からコンテンツを取得するには、3 日まで待たなければなりませんWebView
。
onPageStarted: http://example.com/login
onPageFinished: http://example.com/login
ドキュメントに基づいて、私はこの動作を期待していません。onPageStarted
との数が不均衡であることに注意してくださいonPageFinished
。onPageFinished
リダイレクトされた URL で呼び出される方法が特に嫌いWebView
ですが、コンテンツが含まれていません。この動作はおそらく変更できないことは理解していますが、この予期しない動作は少なくとも文書化する必要があります。