Android Volley Timeoutを処理するには、使用する必要があります RetryPolicy
RetryPolicy
- Volleyは、リクエストに対してRetryPolicyを実装する簡単な方法を提供します。
- Volleyは、すべての要求に対してデフォルトのソケットと接続TImeoutを5秒に設定します。
RetryPolicy
タイムアウトが発生したときに特定のリクエストを再試行する方法のロジックを実装する必要があるインターフェースです。
これらの3つのパラメータを扱います
- タイムアウト-再試行ごとにソケットタイムアウトをミリ秒単位で指定します。
- 再試行回数-再試行が試行された回数。
- バックオフ乗数-再試行のたびにソケットに設定される指数時間を決定するために使用される乗数。
例のために。RetryPolicyがこれらの値で作成された場合
タイムアウト-3000ミリ秒、再試行回数-2、バックオフ乗数-2.0
再試行1:
- 時間=時間+(時間*バックオフ乗数);
- 時間= 3000 + 6000 = 9000ミリ秒
- ソケットタイムアウト=時間。
- 9秒のソケットタイムアウトでディスパッチされたリクエスト
再試行2:
- 時間=時間+(時間*バックオフ乗数);
- 時間= 9000 + 18000 = 27000ms
- ソケットタイムアウト=時間。
- 27秒のソケットタイムアウトでディスパッチされたリクエスト
そのため、再試行2の最後にソケットタイムアウトが発生した場合、VolleyはTimeoutError
UIエラー応答ハンドラーでをスローします。
//Set a retry policy in case of SocketTimeout & ConnectionTimeout Exceptions.
//Volley does retry for you if you have specified the policy.
jsonObjRequest.setRetryPolicy(new DefaultRetryPolicy(5000,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));