Сохранение данных с сопрограммами во время onPause () (исключая отмену ViewModel и глобальную область сопрограмм) - PullRequest
0 голосов
/ 21 октября 2019

После сохранения некоторых данных (в комнате) во время onPause () с помощью

this.viewModelScope.launch (Dispatchers.IO) {repo.updateNote (id, text)}

Я заметил, что сохранение не происходит большую часть времени, потому что viewModelScope отменяется, если пользователь уходит от фрагмента.

Поскольку использование некоторого типа глобальной области видимости вызывает неодобрение по разным причинамЕсть ли элегантный способ Fire-And-Forget это db-save без привязки его к ViewModelScope?

Я мог бы создать сервис для этого, но это похоже на уродливый хак, я также мог бы использовать runBlocking, который работает, но потенциально могу повесить фрагмент, я ищу элегантный способ сделать это с сопрограммами.

1 Ответ

0 голосов
/ 21 октября 2019

Огонь и забывай, это именно то, для чего GlobalScope: вещи, которые нельзя отменять, так что просто используйте это.

GlobalScope.launch(Dispatchers.IO){ repo.updateNote(id, text) }
...