RxJava just()计算线程

时间:2017-07-20 20:10:13

标签: java android rx-java rx-java2

我很困惑。我有一个方法可以做一些长时间的工作(大约5秒)并返回一个g.addV('user').property('name','abcd').as('user'). V().has('movie','name','movie1'). addE('ratedBy').to('user') 作为结果。 我将这个函数包装成String smth,如下所示:

Observable

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

1 个答案:

答案 0 :(得分:5)

如果你写

return Observable.just(doJob());

相当于

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

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