RxJava just() 计算线程

RxJava just() computation thread

我很困惑。我有一个方法可以做一些长时间的工作(大约 5 秒),结果 returns 一个 String。 我将该函数包装成一个 Observable smth,如下所示:

private Observable<String> getJobObservable() {
    return Observable.just(doJob());
}

但即使使用 .subscribeOn(Schedulers.computation()).observeOn(Schedulers.computation()),我的 doJob() 方法也在 mainThread 上计算 但是,在我将 Observable.just() 更改为 Observable.fromCallable() 之后,一切正常。 为什么 Observable.just() 对线程更改没有反应?

如果你写

return Observable.just(doJob());

相当于

Object o = doJob();
return Observable.just(o);

现在,如果您根本没有 Observable.just(o),那么 doJob() 在哪里执行?仅仅因为 doJob()o 被放在 just 的括号之间,这并不意味着 doJob 的整个执行以某种方式被推迟,这与您确保它通过fromCallable.