dave08
03/15/2018, 1:33 PMsuspend fun registerBroadcastReceiver(context: Context, intentFilter: IntentFilter): ReceiveChannel<Intent> =
suspendCancellableCoroutine { produce<Intent>(capacity = Channel.UNLIMITED) {
var broadcastReceiver:BroadcastReceiver? = null
try {
broadcastReceiver = object : BroadcastReceiver() {
override fun onReceive(context: Context, intent: Intent) {
offer(intent)
}
}.also { context.registerReceiver(it, intentFilter) }
} catch(e: CancellationException) {
context.unregisterReceiver(broadcastReceiver)
}
} }
But it seems from the logs that by the time it got to offer
the channel was already closed...