저는 Android에 익숙하지 않아 사용자가 네트워크에 연결되어 있지 않은 경우 상황을 해결할 수있는 가장 좋은 방법을 찾아 내기 위해 노력하고 있습니다. OkHttp와 함께 Retrofit2를 사용하고 있으며 여러 솔루션을 시도했습니다.네트워크 단절을 처리하는 최적의 방법
첫 번째 방법 :
OkHttp 인터셉터 :
new Interceptor() {
@Override
public Response intercept(Chain chain) throws IOException {
Request request = chain.request();
// try the request
Response response = chain.proceed(request);
private final SuperActivityToast warningToast = new
SuperActivityToast(currentActivity, new Style(), Style.TYPE_BUTTON).setIndeterminate(true);
warningToast.setText("Currently offline").show;
while (!response.isSuccessful()) {
// retry the request
response = chain.proceed(request);
}
// otherwise just pass the original response on
return response;
}
}
그래서 기본적으로 나는 사용자가 네트워크 연결을 (이것은 기본적인 생각이 때까지 요청, 나는 수표를 구현할 계속 다시 시도 사용자가 네트워크가없는 경우와 문제가 서버에서 발생하는 경우를 구별하기 위해),하지만 그것이 효율적이지 않다는 것을 알고 있습니다. 또한 while 루프는 액세스하지 않습니다 (중단 점을 확인하기 위해 디버깅 모드를 사용했습니다). 코드는 Response response = chain.proceed(request);
에서 멈추었습니다.이 부분에서는 요청이 다시로드되고 다시 실패합니다. 즉, 다시 인터셉터가 다시 액세스되지 않습니다. 콘솔의 오류.
두 번째 접근 방식은 수동으로 실패한 요청을 다시 시도하는 사용자에 대한 버튼 축배를 구현하는 Retrying the request using Retrofit 2을하지만,이 상황에서 나는 장벽을 만난 :
나는이 예제를 사용했습니다 을 경우 활동에 여러 요청이있는 경우 재시도 단추가있는 축배가 표시되어 사용자가 각 요청을 개별적으로 다시 시도 할 수 있습니다.
내가 놓친 다른 방법은 없나요? 주요 질문은 다음과 같습니다. 사용자 네트워크 연결 끊김을 확인하고 사용자가 요청을 다시 시도하거나 실패한 요청을 자동으로 다시 시도하도록 허용하는 가장 좋은 방법은 무엇입니까?
, 내 대답을 확인하시기 바랍니다 할 때 당신은 당신이 관찰에 콜백을 얻을이 간단한 라이브러리 RxJava (나는이 방법을 사용), 사용할 수 있습니다 –