안드로이드 발리 타임 아웃을 처리하려면 RetryPolicy
재시도 정책
- 발리는 요청에 대해 RetryPolicy를 쉽게 구현할 수있는 방법을 제공합니다.
- 발리는 모든 요청에 대해 기본 Socket & ConnectionTImeout을 5 초로 설정합니다.
RetryPolicy
시간 초과가 발생했을 때 특정 요청을 다시 시도하는 방법에 대한 논리를 구현해야하는 인터페이스입니다.
이 세 가지 매개 변수를 처리합니다
- 제한 시간-재 시도 할 때마다 소켓 제한 시간을 밀리 초 단위로 지정합니다.
- 재시도 횟수-재시도 횟수입니다.
- Back Off Multiplier 백 오프 승수-모든 재 시도에 대해 소켓에 설정된 지수 시간을 결정하는 데 사용되는 승수입니다.
예를 들어. 이 값으로 RetryPolicy를 생성 한 경우
시간 초과-3000ms, 재시도 횟수-2, 백 오프 승수-2.0
재시도 1
- 시간 = 시간 + (시간 * 백 오프 승수);
- 시간 = 3000 + 6000 = 9000ms
- 소켓 타임 아웃 = 시간;
- 소켓 시간 초과가 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));