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
.
我很困惑。我有一个方法可以做一些长时间的工作(大约 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
.