【发布时间】:2017-10-12 05:16:07
【问题描述】:
我是 RxJava 和 RxAndroid 的新手,并试图了解 Observable.just 和 Single 之间的区别。看起来每个都旨在为其观察者发出一个项目。
这是我的带有两个按钮的简单 Android 活动的代码。第一个按钮创建一个Observable,第二个按钮创建一个Single:
findViewById(R.id.just).setOnClickListener(view -> Observable.just("item").subscribe(
new Observer<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(LOG_TAG, "just onSubscribe");
}
@Override
public void onNext(String s) {
Log.d(LOG_TAG, "just s=" + s);
}
@Override
public void onError(Throwable e) {
Log.e(LOG_TAG, "just e=" + e);
}
@Override
public void onComplete() {
Log.d(LOG_TAG, "just onComplete");
}
}));
findViewById(R.id.single).setOnClickListener(
view -> Single.create((SingleOnSubscribe<String>) e -> {
})
.subscribe(new SingleObserver<String>() {
@Override
public void onSubscribe(Disposable d) {
Log.d(LOG_TAG, "single onSubscribe");
}
@Override
public void onSuccess(String o) {
Log.d(LOG_TAG, "single onSuccess");
}
@Override
public void onError(Throwable e) {
Log.d(LOG_TAG, "single onError", e);
}
}));
当我按下“Just”按钮时,onSubscribe、onNext 和 onComplete 被调用。
当我按下“Single”按钮时,只会调用SingleObserver#onSubscibe,而不会调用SingleObserver#onSuccess。
我的 build.gradle 中的 RxJava 和 RxAndroid 的版本:
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
// Because RxAndroid releases are few and far between, it is recommended you also
// explicitly depend on RxJava's latest version for bug fixes and new features.
compile 'io.reactivex.rxjava2:rxjava:2.1.3'
【问题讨论】:
标签: android rx-java rx-android