RxJava:如何使可观察性在不同于主线程的线程上创建

RxJava:如何使可观察性在不同于主线程的线程上创建,java,android,rx-java,rx-android,rx-java2,Java,Android,Rx Java,Rx Android,Rx Java2,我希望可观察的代码在不同于主线程的线程上运行。我该怎么做,我是这样做的: Observable operationObservable = Observable.create(new ObservableOnSubscribe() { @Override public void subscribe(ObservableEmitter e) throws Exception { e.onNext(longRunningOperation())

我希望可观察的代码在不同于主线程的线程上运行。我该怎么做,我是这样做的:

Observable operationObservable = Observable.create(new ObservableOnSubscribe() {
        @Override
        public void subscribe(ObservableEmitter e) throws Exception {
            e.onNext(longRunningOperation());
            e.onComplete();
        }
    })
    .subscribeOn(Schedulers.io()) // subscribeOn the I/O thread
    .observeOn(AndroidSchedulers.mainThread());

如果您需要一个新线程来运行某些东西,您可以使用
subscribeOn(Schedulers.newThread())

另一种选择是创建自己的调度器和执行器,这在大多数情况下是不必要的

进一步阅读:

好吧,尝试在
observeOn
中使用不同的线程。您可以通过
observeOn
操作符指示
observeable
向特定计划程序上的观察者发送通知。这样,您就可以使用
调度器
或实现
调度器
的类来观察您的示例是否做到了这一点
subscribeOn
将确保
ObservableOnSubscribe.subscribe
的主体在IO调度程序的一个IO线程中执行。