2016-11-10 1 views
1

Я использую последнюю версию Retrofit. Я выполняю несколько запросов в действии и в методе onDestroy, т. Е. Когда действие завершается, я хочу завершить все ожидающие запросы и, следовательно, я звоню okHttpClient.dispatcher().cancelAll().Android модифицирует неожиданное значение флага «отменено» в 'onFailure()' после отмены всех запросов

onFailure метод запроса обрабатывается таким образом: -

 @Override 
     public void onFailure(Call<APIResponseClass> call, Throwable t) { 

      if (call != null && !call.isCanceled()) { 
       // Call is not cancelled, Handle network failure 

       onNetworkFailure(call, t); 

      } else if (call != null && call.isCanceled()){ 

       // Call is CANCELLED. IGNORE THIS SINCE IT WAS CANCELLED. 

      } 
     } 


Проблема, я получаю неожиданное поведение в методе OnFailure. Несмотря на то, что звонок отменен через okHttpClient.dispatcher().cancelAll(), отменен Флаг получен как false, который должен был быть true, то есть call.isCancelled() должен был быть true.

Однако переменная Throwable t неожиданно посылают причину, как java.io.IOException: Отменена и detailMessage, как Отменен. Я добавил скриншот моего отладчика ...

enter image description here

Мой вопрос, если причина исключения определяется как отмена запроса, почему не отмененный флаг отображения должного результата ??

Я был referring to this link для отмены текущих запросов модернизированных ...

Пожалуйста, помогите.

+0

Может ли это быть ошибкой в ​​библиотеке Retrofit? Или я чего-то не хватает? Из ссылки, приведенной здесь https://futurestud.io/tutorials/retrofit-2-cancel-requests, они также используют для этого метод 'call.isCanceled()'. Если это ошибка, могу ли я поставить проблему в своем репозитории github? Мне нужны ваши предложения .... – oathkeeper

ответ

0

Несмотря на то, что я ненавижу отвечать на мои вопросы, поскольку никто не ответил здесь, я пишу это, чтобы помочь другим, сталкивающимся с подобными проблемами.

Да, это ошибка в Домостроительной библиотеке. Поскольку никто не ответил в StackOverflow, я поднял тот же запрос в официальном репозитории Retrofit Github. Здесь вы можете найти ссылку на эту проблему. https://github.com/square/retrofit/issues/2076

Ожидается, что это будет исправлено в версии до версии 2.

Смежные вопросы