我打算把我的一个方法从这个方法重构。
if (!isMobileBluetoothOn()) {
sendError();
return false;
}
改成这个
getBluetoothState().subscribe(state->{
if(!state.isEnabled()){
sendError();
return false;
}
});
但我在IDE中得到这个错误 "UnExpected return value"
我如何才能在onSuccess方法中返回布尔值?
我建议你把这里的逻辑分割成这样。
Observable<Boolean> isBluetoothEnabled = getBluetoothState()
.map(state -> {state.isEnabled()})
.replay(1)
.refCount()
...
// use isBluetoothEnabled for something you need
...
isBluetoothEnabled
.subscribe(isEnabled -> {
if (!isEnabled) {
sendError()
}
})
我真的不知道你的情况,但你说..:
事实上,我是在一个返回类型为布尔值的方法中调用这个方法,我想从onSubscribed方法中返回布尔值。
看起来你要同步获取布尔值。对于反应式编程来说,这绝对是不好的做法,但无论如何,你可以使用你的 Observable
作为 BlockingObservable
. 代码看起来像这样。
val isEnabled = getBluetoothState().toBlocking().first().isEnabled()
你可以阅读更多关于 BlockingObservable
这里。http:/reactivex.ioRxJavajavadocrxobservablesBlockingObservable.html。
尽量避免这种做法,但有时你必须使用它,可能是你的情况。
祝您好运!