我想知道如何在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)
这是做到这一点的方法吗?
答案 0 :(得分:0)
看起来GlobalScope
是最好的解决方案:
GlobalScope.launch(Dispatchers.IO){
///
}