Quando cancelar a inscrição de uma assinatura
Eu tenho uma pergunta sobre como cancelar a inscrição de um observável. Eu tenho dois códigos e não tenho muita certeza sobre qual é o melhor.
Exemplo 1 -> Cancele a inscrição do assinante assim que o fluxo terminar:
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
}
}
Exemplo 2 -> Cancele a inscrição depois que a atividade for destruída:
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 mencionar que meus observáveis só serão emitidos uma vez, a atividade não deve esperar por mais ligações do Observável.
Qual é o melhor?
desde já, obrigado