如何在RxAndroid中使用工作线程

时间:2017-10-15 13:27:03

标签: rx-java rx-android

我正在尝试使用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() {

                }
            });

2 个答案:

答案 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。我也在您的代码中进行了更改。

希望这个答案对您有帮助。