Subscribewith Vs abonnez-vous à RxJava2(Android)?

Quand appeler le subscribeWith méthode plutôt que la plaine s'abonner? Et qu'est-ce que le cas d'utilisation?

compositeDisposable.add(get()
    .observeOn(AndroidSchedulers.mainThread())
    .subscribeOn(Schedulers.io())
    .subscribe(this::handleResponse, this::handleError));

VS

   compositeDisposable.add(get()
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
              // .subscribe(this::handleResponse, this::handleError);
                .subscribeWith(new DisposableObserver<News>() {
                    @Override public void onNext(News value) {
                        handleResponse(value);
                    }

                    @Override public void onError(Throwable e) {
                        handleError(e);
                    }

                    @Override public void onComplete() {
                       //dispose here ? why? when the whole thing will get disposed later
                       //via  compositeDisposable.dispose();  in onDestroy();
                    }
                }));

Merci


Ajouté Plus Tard

Conformément à la documentation, à la fois retour jetables SingleObserver instances:

@CheckReturnValue
@SchedulerSupport(SchedulerSupport.NONE)
public final <E extends SingleObserver<? super T>> E subscribeWith(E observer) {
    subscribe(observer);
    return observer;
}

@SchedulerSupport(SchedulerSupport.NONE)
public final Disposable subscribe(final Consumer<? super T> onSuccess, final Consumer<? super Throwable> onError) {
    ObjectHelper.requireNonNull(onSuccess, "onSuccess is null");
    ObjectHelper.requireNonNull(onError, "onError is null");
    ConsumerSingleObserver<T> s = new ConsumerSingleObserver<T>(onSuccess, onError);
    subscribe(s);
    return s;
}

Où ConsumerSingleObserver classe implémente SingleObserver et Jetable.

  • Grâce à @Simbatrons réponse, pour résumer le specefic cas d'utilisation (de ce que j'ai underestood) si vous disposez d'un même observateur que vous souhaitez lier à différents observables, l'utilisation subscribeWith. (si plusieurs Observables pouvez utiliser le même observateur de mise en œuvre). veuillez ajouter vos commentaires si vous pensez que ce n'est pas le seul differnce en cas d'utilisation
  • Je me demande la même chose à mon avis votre premier extrait de code est plus propre à l'utilisation des expressions lambda etc. Donc oui, il semble que les rares cas où vous voulez réutiliser le même Observateur est le seul moment où vous en avez besoin .subscribeWith()? C'est bizarre que les documents ne sont pas vraiment parler de la surcharge variante de s'abonner que renvoie le Jetable si. Au lieu de cela ils ont juste point de vous pour utiliser la nouvelle et difficile à manier subscribeWith()
InformationsquelleAutor bastami82 | 2017-06-19