Модифицирует ли запросы на уничтоженный фрагмент? - PullRequest
0 голосов
/ 25 февраля 2019

Я использую модификацию, и у меня есть 2 фрагмента (Фрагмент A, Фрагмент B).В каждом фрагменте у меня есть 2 запроса (для фрагмента A запрос давайте назовем запрос A1, requestA2).Поэтому я открываю свое приложение и открываю фрагмент А. После этого асинхронно запускается запрос А1 и запрос А2.После этого я открою Фрагмент B и отправлю запрос.(запрос B1 и B2).Но если я открою фрагмент B и быстро нажму кнопку возврата, чтобы вернуть фрагмент A, будут ли запросы B1 и B2 продолжать работать асинхронно?Или дооснащение автоматически отменяет запрос на уничтожение фрагмента?Так что мне нужно написать что-то подобное на прессе?

if(call != null) {
  call.cancel();
}

1 Ответ

0 голосов
/ 25 февраля 2019

Как я знаю, модернизация не делает этого, и вы должны сначала создать вызов как глобальную переменную в обоих фрагментах и ​​отменять вызов каждый раз, когда вы считаете, что этот вызов вам больше не нужен, или вы хотите отменить и возобновить этот вызов.

private Call<Response> mCall;
//...onCreateView() and other codes
@Override
public void onDestroyView() {
    if(mCall!= null && mCall.isExecuted()) {
        mCall.cancel();
    }
}

И отметьте это в onFailure() дооснащения, чтобы предотвратить некоторые ошибки, которые происходят со мной

@Override
public void onFailure(@NonNull Call<T> call, @NonNull Throwable t) {
      if (call.isCanceled()) {
           //do nothing 
      }else {
           //show some thing to user ui
      }
}
...