how to use worker thread in RxAndroid

非 Y 不嫁゛ 提交于 2020-01-07 06:26:43

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!