我使用RxAndroid编写以下代码:
Observable.from(check())
.filter(new Func1<Response, Boolean>() {
@Override
public Boolean call(Response response) {
Log.d(TAG, "******* " + response.getStatus());
return true;
}
})
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<Response>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Response response) {
}
})
;
Observable.filter()
方法由于某种原因未被调用。
有关此的任何提示吗?
答案 0 :(得分:0)
在您的示例当前编写的方式中,看起来您有竞争条件。您对subscribeOn
的调用将导致主线程返回,而另一个线程执行您的可观察链。当主线程到达程序末尾时,它将终止(可能在从check()
发出任何数据之前)。您可以添加.toBlocking()
以访问将等待终端事件的块运算符。
int i = Observable.just(1)
.subscribeOn(Schedulers.io())
.toBlocking()
.single();
如果这不是问题(即您正在使用倒计时锁存器或在某种类型的服务器中运行),那么我建议检查从check()
返回的可迭代或未来是否为空。