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()不对线程更改做出反应?
如果你写
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.