как вызвать suspend функцию из Сервиса Андроид?

Обычно фрагменты или вьювмодели дают нам scope,

viewModelScope.launch {
        withContext(Dispatchers.IO) {
        ***suspend...***
        }
 }

есть ли подобное в Сервисах или как вызвать suspend функцию из сервиса?


Ответы (1 шт):

Автор решения: IR42

Можно подключить библиотеку "androidx.lifecycle:lifecycle-service:$lifecycle_version" и наследоваться от LifecycleService, тогда появится свойство lifecycleScope. Либо можно создать свой CoroutineScope:

class MyService : Service() {
    val scope = CoroutineScope(SupervisorJob() + Dispatchers.Main.immediate)

    override fun onDestroy() {
        scope.cancel()
        super.onDestroy()
    }
}
→ Ссылка