如何在不将其作为方法参数的情况下保留 rx Scheduler?
How to preserve rx Scheduler without getting it as a method parameter?
如果我这样做:
Observable.just(1)
.flatMap(
//inner chain
Observable.just(2)
.subscribeOn(Schedulers.newThread())
)
.map(// we are in the inner chain thread! //)
.subscribeOn(Schedulers.newThread())
.subscribe()
然后内线程将"leak"到主可观察链。
如何保留原线程?
提前致谢!
您必须在 flatMap
之前和之后指定相同的调度程序
Scheduler scheduler = ...
Observable.just(1)
.subscribeOn(scheduler)
.flatMap(v -> Observable.just(2).subscribeOn(newThread()))
.observeOn(scheduler)
.subscribe()
如果您想 return 到完全相同的线程,您可以指定一个单线程调度程序:
scheduler = Schedulers.from(Executors.newSingleThreadedExecutor());
使用不是真正用于-public-消费
scheduler = new SingleScheduler();
或者采用任何标准调度程序并使用 RxJava 2 扩展项目的 SharedScheduler:
scheduler = new SharedScheduler(Schedulers.computation());
如果我这样做:
Observable.just(1)
.flatMap(
//inner chain
Observable.just(2)
.subscribeOn(Schedulers.newThread())
)
.map(// we are in the inner chain thread! //)
.subscribeOn(Schedulers.newThread())
.subscribe()
然后内线程将"leak"到主可观察链。 如何保留原线程?
提前致谢!
您必须在 flatMap
Scheduler scheduler = ...
Observable.just(1)
.subscribeOn(scheduler)
.flatMap(v -> Observable.just(2).subscribeOn(newThread()))
.observeOn(scheduler)
.subscribe()
如果您想 return 到完全相同的线程,您可以指定一个单线程调度程序:
scheduler = Schedulers.from(Executors.newSingleThreadedExecutor());
使用不是真正用于-public-消费
scheduler = new SingleScheduler();
或者采用任何标准调度程序并使用 RxJava 2 扩展项目的 SharedScheduler:
scheduler = new SharedScheduler(Schedulers.computation());