我使用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()
方法没有被调用。
有什么提示吗?
从当前编写示例的方式来看,您似乎有一个竞争条件。调用subscribeOn
将导致主线程返回,而另一个线程执行你的可观察链。当主线程到达程序的末尾时,它将终止(可能在从check()
发出任何数据之前)。您可以添加.toBlocking()
来访问将等待终端事件的块操作符。
int i = Observable.just(1)
.subscribeOn(Schedulers.io())
.toBlocking()
.single();
如果这不是问题(即您正在使用倒计时锁存器或在某种类型的服务器中运行),那么我建议检查从check()
返回的iterable或future是否为空。