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线程中执行。