问题
I am trying to use RxAndroid as shown in the below posted code. firstly, I know that to use .delay() I have to have it work on a worker thread through "Schedulers.io" but Schedulers class does not provide or have ".io" thread.How to use it
lib
compile 'io.reactivex.rxjava2:rxjava:2.0.1'
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
code:
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() {
}
});
回答1:
Try this way -
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));
Using .subscribeOn(Schedulers.newThread())
you can perform work on background thread.
回答2:
You can provide Schedulers.io() or Schedulers.computation() or any thread here. Below I modified your code and provided the answer.
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() {
}
});
}
One more thing I would like to mention here. Once an Observable
is subscribed, it returns disposable
. I have made that changes too in your code.
Hope this answer helps you.
来源:https://stackoverflow.com/questions/46755518/how-to-use-worker-thread-in-rxandroid