Je suis nouveau à RxJava et RxAndroid et en essayant de comprendre la différence entre Observable.just
et Single
. Il semble que chacun soit conçu pour émettre un objet pour son observateur.Observable.juste vs Simple dans RxJava
Voici le code de mon activité Android simple avec deux boutons. Le premier bouton crée une Observable
, et le second bouton crée une 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);
}
}));
Lorsque j'appuie sur le "Just" bouton, onSubscribe
, onNext
et onComplete
sont appelés.
Lorsque j'appuie sur le bouton "Single", seul le SingleObserver#onSubscibe
est appelé, et SingleObserver#onSuccess
ne l'est pas.
Les versions de RxJava et RxAndroid dans mon build.gradle:
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'
OK, merci. Mais l'essentiel est qu'ils sont tous les deux conçus pour émettre un événement, n'est-ce pas? –
@MaksimDmitriev https://github.com/ReactiveX/RxJava/wiki/What%27s-different-in-2.0. vérifier les docs je pense que les docs ont une meilleure explication – Raghunandan
@MaksimDmitriev oui. et cela dépend de dans quels cas vous devez utiliser Observable/Flowable/Single/Maybe/Completable. Cochez ceci un exemple d'utilisation de RxJava avec Room https://medium.com/google-developers/room-rxjava-acb0cd4f3757 – Raghunandan