RxJava just()计算线程

Too*_*azy 1 java android rx-java rx-java2

我糊涂了.我有一个方法,做一些长期工作(约5秒)并返回String一个结果.我把这个函数包装成这样的Observablesmth:

private Observable<String> getJobObservable() {
    return Observable.just(doJob());
}
Run Code Online (Sandbox Code Playgroud)

不过,即使.subscribeOn(Schedulers.computation()).observeOn(Schedulers.computation())我的doJob()方法计算的mainThread ,但是,在我已经改变Observable.just(),以Observable.fromCallable()一切工作正常.为什么Observable.just()不对线程更改做出反应?

aka*_*okd 5

如果你写

return Observable.just(doJob());
Run Code Online (Sandbox Code Playgroud)

这相当于

Object o = doJob();
return Observable.just(o);
Run Code Online (Sandbox Code Playgroud)

现在,如果你根本没有Observable.just(o),那么doJob()执行在哪里?仅仅因为doJob()或被o置于括号之间just,它并不意味着以某种方式doJob延迟的整个执行,而不是当你确保通过时fromCallable.