-->

如何使用RxAndroid工作者线程(how to use worker thread in RxA

2019-10-29 06:55发布

我试图用RxAndroid如图所示贴在下面的代码。 首先,我知道,使用.delay()我必须有它通过“Schedulers.io”一个工作线程工作,但调度程序类不提供或有“.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() {

                }
            });

Answer 1:

试试这个办法 -

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())你可以对后台线程的工作。



Answer 2:

您可以提供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 。 我已经在你的代码也发生了变化。

希望这个答案可以帮助你。



文章来源: how to use worker thread in RxAndroid