2017-07-20 122 views
1

我很困惑。我有一種方法可以做一些長時間的工作(大約5秒鐘),並返回String。 我裹該功能爲Observable水木清華這樣的:RxJava just()計算線程

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

但即使有.subscribeOn(Schedulers.computation()).observeOn(Schedulers.computation())doJob()方法上mainThread 計算不過,之後我已經改變Observable.just()Observable.fromCallable()一切工作正常。 爲什麼Observable.just()對線程更改沒有反應?

回答

3

如果你寫

return Observable.just(doJob()); 

,等效於

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

現在,如果你沒有做Observable.just(o)在所有的,哪裏doJob()執行?僅僅因爲doJob()o被置於just的括號之間,這並不意味着doJob的整個執行得到延遲,與通過fromCallable確保它不同。