Wenn Sie ein Abonnement abbestellen möchten

Ich habe eine Frage zum Abbestellen einer Observable. Ich habe zwei Codes und bin mir nicht sicher, welcher besser ist.

Beispiel 1 -> Abonnent abbestellen, sobald der Stream beendet ist:

Subscriber<String> subscriber = new Subscriber<String>() {
        @Override
        public void onCompleted() {
            progressdialog.dissmiss();
            unsubscribe();
        }

        @Override
        public void onError(Throwable e) {
            progressdialog.dissmiss();
        }

        @Override
        public void onNext(String s) {
            // do something with data
        }
    }

Beispiel 2 -> Abonnement kündigen, sobald die Aktivität zerstört ist:

private void test(){
    Subscriber<String> subscriber = new Subscriber<String>() {
        @Override
        public void onCompleted() {
            progressdialog.dissmiss();
        }

        @Override
        public void onError(Throwable e) {
            progressdialog.dissmiss();
        }

        @Override
        public void onNext(String s) {
            // do something with data
        }
    };

    subscription = BackendRequest.login(loginRequest)
            .subscribeOn(Schedulers.newThread())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(subscriber);

    compositeSubscription.add(subscription);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    this.subscription.unsubscribe();
}

Ich muss erwähnen, dass meine Observablen nur einmal gesendet werden. Die Aktivität sollte nicht auf weitere Aufrufe von Observable warten.

Welches ist besser

Danke im Vorau

Antworten auf die Frage(6)

Ihre Antwort auf die Frage