http://blog.danlew.net/2015/07/23/deferring-observable-code-until-subscription-in-rxjava/讨论了使用Observable.just,Observable.create和Observable.defer创建observable的方法
我们说我有这个:
List<File> fileIOFunction() {
// does some file io operations
}
OBSERVABLE.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
如果OBSERVABLE为:
,则运行文件io操作的线程是什么Observable.create(
new Observable.OnSubscribe<List<File>>() {
@Override
public void call(Subscriber<? super List<File>>
subscriber) {
subscriber.onNext(fileIOFunction());
}
如果OBSERVABLE是Observable.just(fileIOFunction())
如果OBSERVABLE
Observable.defer(new Func0<Observable<List<File>>>() {
@Override
public Observable<List<File>> call() {
return Observable.just(fileIOFunction());
});
答案 0 :(得分:1)
对于只是它将在调用线程上运行,因为将急切地调用fileIOFunction()。由于 subscribeOn ,Defer和Create将在Schedulers.io()上运行,并且由于 observeOn (切换线程)将切换到AndroidSchedulers.mainThread()。创建和推迟是懒惰的。