私は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);
で停止します。この部分でリクエストがリロードされ、さらには失敗します。インターセプタは何もせずに再アクセスされませんコンソールのエラー。
第2のアプローチは:手動で失敗した要求を再試行するユーザーのためのボタンでトーストを実装するためにRetrying the request using Retrofit 2をしかし、このような状況で私が障壁に会った:
私はこの例を使用しているをした場合アクティビティに複数のリクエストがある場合は、ユーザーが各リクエストを別々に再試行するための再試行ボタン付きトーストが表示されます。
他の方法はありませんか?主な質問は次のとおりです。ユーザーネットワークの切断を確認し、ユーザーがリクエストを再試行できるか、または失敗したリクエストを自動的に再試行するのに最適な方法は何ですか?
なるとき、この単純なライブラリを使用すると、観測可能でコールバックを取得し、RxJavaを(私はこのアプローチを使用)を使用することができ、それはあなたを助けている場合、私の答えを確認してください –