Rx java 可观察的,可观察的

Rx java 可观察的,可观察的,rx-java,Rx Java,讨论使用Observable.just、Observable.create和Observable.defer创建可观察对象 假设我有这个: List<File> fileIOFunction() { // does some file io operations } OBSERVABLE.subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) List fileIOFuncti

讨论使用Observable.just、Observable.create和Observable.defer创建可观察对象

假设我有这个:

List<File> fileIOFunction() {
    // does some file io operations
}

OBSERVABLE.subscribeOn(Schedulers.io())
    .observeOn(AndroidSchedulers.mainThread())
List fileIOFunction(){
//执行一些文件io操作
}
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.create(
新的可观察的。OnSubscribe(){
@凌驾

public void call(Subscriber因为它将在调用线程上运行,因为fileIOFunction()将被急切地调用。Defer和Create将在Schedulers上运行。io()由于subscribeOn,将切换到AndroidSchedulers.mainThread(),因为observeOn(切换线程).Create和Defer都是惰性的。

您只需将
System.out.println(Thread.currentThread())
添加到
fileIOFunction()
,实现这两种情况并运行它们。谢谢!我不知道Thread.currentThread()。附加getName()以打印哪个线程。
Observable.defer(new Func0<Observable<List<File>>>() {
                @Override
                public Observable<List<File>> call() { 
                    return Observable.just(fileIOFunction());
                });