Отмена сопрограмм в BroadcastReceiver - PullRequest
0 голосов
/ 05 ноября 2019

Мне было интересно, как бороться с отменой сопрограмм в BroadcastReceiver. Мне нужно запустить несколько suspend методов, и на данный момент я использую GlobalScope.launch или runBlocking. Есть ли другой способ, чтобы контролировать выполняемое задание и отменить его после завершения BroadcastReceiver()? Это AlarmManager конкретно.

Для всех, кто говорит, чтобы переключиться на WorkManager, ответ - нет, потому что я планирую работу в точное время, а WorkManager не делает этого для вас. Таким образом, чтобы установить Alarms, я должен прочитать некоторые данные из метода suspend после запуска AlarmManager. Я также попробовал это решение:

//inside Alarm Managers onReceive Method

val job = coroutineScope.launch {
    delayingOperationMethod()
}

job.invokeOnCompletion {
    coroutineScope.cancel()
}

Где job просто:

private val job: Job = Job()
private val coroutineScope = CoroutineScope(job + Dispatchers.IO)

Это способ сделать это?

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