我正在尝试使用RxAndroid,如下面发布的代码所示。 首先,我知道要使用.delay()我必须让它通过" Schedulers.io"工作线程。但是Schedulers类没有提供或者有#34; .io" thread.How如何使用
LIB
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
码:
Observable observable1 = Observable.just("2");
Observable observable2 = Observable.just("7");
Observable observable = Observable.zip(observable1, observable2, (i1, i2) -> {
return i1 + ", " + i2;
})
.delay(10, TimeUnit.SECONDS, .....)//how to use a worker thread here
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Object value) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
答案 0 :(得分:0)
尝试这种方式-
Observable.just("long", "longer", "longest")
.doOnNext(c -> System.out.println("processing item on thread " + Thread.currentThread().getName()))
.subscribeOn(Schedulers.newThread())
.map(String::length)
.subscribe(length -> System.out.println("item length " + length));
使用.subscribeOn(Schedulers.newThread())
,您可以在后台线程上执行工作。
答案 1 :(得分:0)
您可以在此处提供Schedulers.io()或Schedulers.computation()或任何线程。下面,我修改了您的代码并提供了答案。
Observable observable1 = Observable.just("2");
Observable observable2 = Observable.just("7");
Disposable d =
Observable.zip(
observable1, observable2, (i1, i2) -> {
return i1 + ", " + i2;
}
)
.delay(10, TimeUnit.SECONDS, Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Object value) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
}
我想在这里再提一件事。订阅Observable
后,它将返回disposable
。我也在您的代码中进行了更改。
希望这个答案对您有帮助。