2
我是新來RxJava和RxAndroid,並試圖瞭解Observable.just
和Single
之間的差異。它看起來每個都被設計爲爲其觀察者發射一個項目。Observable.just VS單在RxJava
這裏是我的簡單的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);
}
}));
當我按下「只是」按鈕,onSubscribe
,onNext
,並onComplete
被調用。
當我按下「單個」按鈕時,只調用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'
好的,謝謝。但底線是,它們都旨在發出一個事件,對吧? –
@MaksimDmitriev https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-2.0。檢查文檔我覺得文檔有一個更好的解釋 – Raghunandan
@MaksimDmitriev肯定。它在你需要使用可觀察/懸浮劑/單/也許/ Completable什麼情況下要看。查看這個RxJava用例的示例https://medium.com/google-developers/room-rxjava-acb0cd4f3757 – Raghunandan