【发布时间】:2017-05-05 14:04:38
【问题描述】:
在连接蓝牙设备的应用中,我使用 RxKotlin 使用以下功能:
private fun startBluetoothPair(device: BluetoothDevice) {
Observable.just(device)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.map {
var uuid: UUID = BLUETOOTH_UUID
var socket = it.createRfcommSocketToServiceRecord(uuid)
socket.connect()
return socket
}
.subscribe {
// Do something with the BluetoothSocket
}
}
这个函数应该简单地在后台连接蓝牙设备,然后对套接字做一些事情(再次在主线程中)。但是,map 无法处理return socket 部分,告诉我有一个Type mismatch,它在需要Unit 的地方找到了一个BluetoothSocket。
这里出了什么问题?我认为地图应该能够推断出返回类型。
【问题讨论】:
-
你试过
return@scan而不是return吗? -
@Rehan:谢谢,这行得通! (或者至少,它不再抱怨,现在无法测试)但对我来说,
scan看起来像纯粹的魔法......这是做什么的?需要详细说明吗?
标签: android reactivex rx-kotlin