Отмена Retrofit + Rx Java вызов, когда приложение закрыто, нажав кнопку назад - PullRequest
2 голосов
/ 08 января 2020

У меня есть библиотечный модуль, который выполняет сетевые вызовы, используя retrofit2 и Rx Java. Звонки сделаны, когда приложение запускается, и сообщение о тосте отображается, когда они успешны. После запуска приложения, если я закрываю приложение, нажав клавишу «Назад» до получения результата, через некоторое время отображается тост, что означает, что звонки выполняются в фоновом режиме. Я не хочу этого если я закрою приложение, сетевые вызовы должны быть отменены. Этого не произойдет, если я удалю приложение из последних приложений.

1 Ответ

0 голосов
/ 08 января 2020

Вам необходимо сделать это:

1) Определить, когда приложение переходит в фоновый режим - это можно сделать в одном месте с помощью класса ProcessLifecycleOwner, см. пример реализации

2) Когда приложение переходит в фоновый режим, вызывайте метод cancel () или cancelAll () в зависимости от того, хотите ли вы отменить один или все фоновые вызовы API.

Поскольку вы хотите отменить все операции при закрытии приложения, лучший подход, я думаю, это использовать сопрограмму с областью видимости для вызова операции API. Таким образом, как только ваше приложение будет закрыто, область видимости ViewModel превысит go, и, следовательно, соответствующая ожидающая операция будет автоматически отменена, очищена и кратко реализована! Ссылка Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...