Вы можете отменить запрос на модернизацию.
Используйте cancel () метод для отмены запроса.
и isCanceled () помогут вам определить, запрос уже отменен или нет.
callWithCancel = apiService.getDataFromDynamicUrl(url);
callWithCancel.enqueue(new Callback<ResponseBody>() {
@Override
public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
if (response.isSuccessful()) {
Toast.makeText(getActivity(), "Request Successful", Toast.LENGTH_SHORT).show();
} else {
Timber.i("Request unsuccessful" + response.errorBody().toString());
Toast.makeText(getActivity(), "Request Unsuccessful", Toast.LENGTH_SHORT).show();
}
}
@Override
public void onFailure(Call<ResponseBody> call, Throwable t) {
if (call.isCanceled()) {
}else {
Toast.makeText(getActivity(), "Request Failed", Toast.LENGTH_SHORT).show();
}
}
});
Для отмены
if (callWithCancel != null){
callWithCancel.cancel();
}
Вы можете поддерживать список или очередь для всех ваших запросов. Добавьте каждый запрос в очередь. Если любой запрос успешен, удалите этот запрос из списка или очереди. Таким образом, Ваш список и очередь всегда будут содержать ожидающий запрос. Таким образом, вы можете легко отменить все запросы, когда вам нужно.
public void cancelAllRequest(){
//how to get the subscription and unsubscribe it
while(!isEmpty()){
requestQueue.remove();
}
}