Ho una domanda su come annullare l'iscrizione di un osservabile. Ho due codici e non sono sicuro di quale sia il migliore.Quando annullare l'iscrizione a un abbonamento
Esempio 1 -> Cancellati l'abbonato una volta che il flusso è terminato:
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
}
}
Esempio 2 -> annullare la sottoscrizione una volta che l'attività è distrutto:
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();
}
devo menzionare che il mio gli osservabili emetteranno solo una volta, l'attività non dovrebbe attendere più chiamate dall'osservabile.
Quale è il migliore?
Grazie in anticipo
Ho problemi ad ottenere il mio codice (con pull da aggiornare) per aggiornare una seconda volta quando si utilizza pull per aggiornare il listener. Ho verificato che il mio pull per aggiornare funzioni correttamente, ma il secondo set di "observable.subscribeOn (Schedulers.newThread()). ObservOn (AndroidSchedulers.mainThread()). Subscribe (subscriber)" non funziona, solo il primo. Qualche idea? – lawonga