0
対
http://blog.danlew.net/2015/07/23/deferring-observable-code-until-subscription-in-rxjava/説明し、Observable.deferObservable.defer Observable.just
のは、私はこれを持っているとしましょう:
List<File> fileIOFunction() {
// does some file io operations
}
OBSERVABLE.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
ファイルIOを何スレッド
Observable.create(
new Observable.OnSubscribe<List<File>>() {
@Override
public void call(Subscriber<? super List<File>>
subscriber) {
subscriber.onNext(fileIOFunction());
}
観察できるがObservable.just(fileIOFunction())
の場合:観測可能である場合、操作は上の実行しますfileIOFunction()が熱心に呼び出されるので、観察可能な場合には、ためだけそれがスレッドを呼び出すことで実行されます
Observable.defer(new Func0<Observable<List<File>>>() {
@Override
public Observable<List<File>> call() {
return Observable.just(fileIOFunction());
});
'System.out.println(Thread.currentThread())'を 'fileIOFunction()'に追加するだけで、両方の場合を実装して実行することができます。 – akarnokd
ありがとう!私はThread.currentThread()について知らなかった。どのスレッドを出力するにはgetName()をアタッチします。 – Marc