shouldOverrideUrlLoadingは、WebViewでローディング(画面更新)をハンドリングする機能です。
WebViewClient::shouldOverrideUrlLoadingの動作について
WebViewClientクラスのメソッドで個人的に使いそうなもの。
- shouldOverrideUrlLoading(WebView view, String url)
URLロード前に呼ばれる - onPageFinished(WebView view, String url)
ページ読み込み完了時に呼ばれる - onPageStarted(WebView view, String url, Bitmap favicon)
ページ読み込み開始時に呼ばれる - onReceivedSslError(WebView view, SslErrorHandler handler, SslError error)
SSLエラー時に呼ばれる
公式をみるとメソッドは他にもたくさんあります。
公式:android.webkit.WebViewClient
https://developer.android.com/reference/android/webkit/WebViewClient
処理概要
アプリ側で最初にWebviewを起動してURLを開いたときは、shouldOverrideUrlLoadingは呼ばれます。
その起動した後、そこで表示したURLのなかにボタンなどがあり、そこを押して他のURLに飛ぼうとするときには、shouldOverrideUrlLoadingは呼ばれません。
onPageStartedとかは呼ばれます。
もしここで、別のリンクを開いたりするとまた、shouldOverrideUrlLoadingが呼ばれます。
設計時の注意
ページを表示するまでに何回かリダイレクトを行うようなページを開く場合は、その処理フローを把握して、適切な処理を実装してあげること。
※何回もshouldOverrideUrlLoadingなどが呼ばれることになるので、下手するとループしたり、設定が反映されなくなったりします。
過去に、認証処理を行うページを開くケースで、UserAgentの設定にハマったことがあります。。。
コメント