Android 从Polidea蓝牙库-Kotlin协同路由返回延迟类型
我正在用kotlin协同程序做一些实验,特别是我想从库中返回到我的协同程序RxBleDevice。 然而,Polidea scanBleDevices函数返回一个一次性的on subscribe。根据我的代码,有没有办法返回到我的RxBleDevice协同程序 这是我的代码,目前尚未编译:Android 从Polidea蓝牙库-Kotlin协同路由返回延迟类型,android,kotlin,bluetooth-lowenergy,kotlinx.coroutines,Android,Kotlin,Bluetooth Lowenergy,Kotlinx.coroutines,我正在用kotlin协同程序做一些实验,特别是我想从库中返回到我的协同程序RxBleDevice。 然而,Polidea scanBleDevices函数返回一个一次性的on subscribe。根据我的代码,有没有办法返回到我的RxBleDevice协同程序 这是我的代码,目前尚未编译: val scanDevices:Deferred=GlobalScope.async{ rxBleClient.scanBleDevices(ScanSettings.Builder()) .build(),
val scanDevices:Deferred=GlobalScope.async{
rxBleClient.scanBleDevices(ScanSettings.Builder())
.build(),filterBuilder.setDeviceName(bikeBleName.build())
.订阅(
{scanResult->
//在这里处理扫描结果。
scanResult.bleDevice
},
{可丢弃->
//在这里处理错误。
}
)
}
您需要将subscribe
方法调用包装到
suspendCancellableCoroutine< RxBleDevice>{ cont ->
//your code here
}
suspendCancelableCorroutine{cont->
//你的代码在这里
}
街区。在subscribe
回调实现中,使用cont.resume()
恢复与结果的协同工作,使用cont.resumeWithException
恢复与错误的协同工作
您可能还希望在协同程序和扫描活动之间绑定取消。有关详细信息,请参见cont.invokeOnCancellation{}
您调用的API看起来像一个Rx,可能其中一个模块有帮助
您需要将
subscribe
方法调用包装到
suspendCancellableCoroutine< RxBleDevice>{ cont ->
//your code here
}
suspendCancelableCorroutine{cont->
//你的代码在这里
}
街区。在subscribe
回调实现中,使用cont.resume()
恢复与结果的协同工作,使用cont.resumeWithException
恢复与错误的协同工作
您可能还希望在协同程序和扫描活动之间绑定取消。有关详细信息,请参见cont.invokeOnCancellation{}
您调用的API看起来像一个Rx,可能其中一个模块有帮助
可能重复的可能重复的可能重复的感谢,它工作!你认为扩展函数也可以是一种方法吗?是的,我认为可以。或者您也可以创建自己的扩展函数,用于执行
订阅
并在内部挂起以使代码更易于阅读谢谢,它可以工作!你认为扩展函数也可以是一种方法吗?是的,我认为可以。或者,您可以创建自己的扩展函数,该函数执行订阅
并在内部挂起,以使代码更易于阅读