Отмена Retrofit Request. Coroutines
К примеру, выполняется какой-либо запрос на сервер с помощью Retrofit 2 и Coroutines. В это время (время выполнения запроса), пользователь смещается на предыдущий фрагмент. С помощью чего можно отменить запрос, который был запущен с помощью Retrofit? В какую сторону копать?
Или же, пользователь скрыл приложение, каким образом можно продолжить выполнение запроса и всего того, что он должен выполнить? Что для этого необходимо?
Ответы (1 шт):
Для того, чтоб использовать корутины вы создаете объект CoroutineScope. Что-то вроде такого
private val parentJob: Job = Job()
private val backgroundScope: CoroutineScope = CoroutineScope(parentJob + Dispatchers.IO)
и потом запускаете:
backgroundScope.launch {
// some action
}
Если пользователь к примеру покинул экран и вам больше не нужно выполнять это действие то достаточно всего-лишь вызвать метод cancel() на вашем scope.
backgroundScope.cancel()
Так же вы можете вызвать метод cancel() и на самом объекте Job тем самым завершив все CoroutineScope которые были созданы внутри объекта Job
Посмотрите эту лекцию по корутинам. Не пожалеете.