Volley
.newRequestQueue(context)
.add(new JsonObjectRequest(
Request.Method.POST,
BuildConfig.API_URL + "/user",
userJson,
new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
doSthOnRequestSuccess();
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
doSthOnRequestFail();
}
}));
リクエストがタイムアウトすると、ErrorListenerが実行され、その後、Volleyは自動的にリクエストを再試行し、今回は成功します。しかし、成功応答リスナーは実行されません。リクエストリトライ後にAndroidボレー応答リスナーが呼び出されない
たとえば、ユーザーが何らかのボタンをクリックしたときにリクエストが失敗するとリクエストが失敗するため、操作が失敗したというエラーメッセージが表示されます。画面は現在エラー状態ですが、Volleyはバックグラウンドでリクエストを再試行しますが、成功しますが、成功したリスナーコードは呼び出されません。これにより、画面がエラー状態のままになるか、ユーザーがボタンをもう一度クリックして重複要求を行うことになります。
私は、ボレーが重複要求を処理できるように呼び出すAPIを変更しましたが、これをアンドロイド側で解決する方法はありますか?
あなたは 'それは、このセクションを実行して確保するonResponse'方法をログに記録しますか? – Saeid