Код: Выделить всё
class MyCustomMessagingService : FirebaseMessagingService() {
... More core here
override fun onNewToken(token: String) {
// Long running operation
GlobalScope.launch { repository.saveNewToken(token) }
}
... More code here
}
Сейчас я использую GlobalScope, потому что хочу, чтобы токен сохранялся, даже если служба завершится. Раньше я использовал новую область действия сопрограммы, привязанную к жизненному циклу Сервиса, но подумал, что, возможно, onDestroy() можно вызвать до сохранения токена.
Также попробовал использовать runBlocking {repository.saveNewToken(token) , потому что onNewToken() должен вызываться из рабочего потока. Другой вариант, который приходит мне на ум, — использовать Worker с одноразовым запросом, но этот вариант кажется излишним.
Как вы думаете, ребята, это наиболее правильный способ вызвать приостанавливаемую функцию изнутри onNewToken(), гарантирующую, что задание не будет отменено, даже если служба будет прекращена и ресурсы будут использоваться правильно?
Спасибо
Подробнее здесь: https://stackoverflow.com/questions/771 ... messagings