La classe astratta ha un metodo add
che consente di aggiungere Subscription
s che verrà annullata con l'utente.
def myObservable = Observable.create({ aSubscriber ->
val listener = {event ->
aSubscriber.onNext(event);
}
existingEventSource.addListener(listener)
// Adds a lambda to be executed when the Subscriber un-subscribes from your Observable
aSubscriber.add(Subscriptions.create(() -> existingEventSource.removeListener(listener)));
})
Pensate aSubscriber
come Observer
che ha sottoscritto il tuo Observable
; lo chiameremo Subscriber
. Finché il numero Subscriber
è ancora sottoscritto allo Observable
, lo Observable
può emettere valori. Ma quando quello Subscriber
non sottoscritto dovrebbe fermarsi. Ma se vogliamo ricevere una notifica quando il Subscriber
disiscrive, possiamo registrare un Action
da eseguire quando succede. Questo è il motivo per cui viene utilizzato il metodo . Come menzionato da @dwursteisen nei commenti; in pratica stai registrando un lambda che verrà eseguito quando il Sottoscrittore non sottoscrive.
È inoltre possibile annullare la sottoscrizione dell'abbonamento su un altro programma di pianificazione. Vedere MainThreadSubscription
dal progetto rxanroid
per un esempio su come ottenerlo.
Ecco un esempio di come ci si utilizza per annullare la sottoscrizione sul thread principale
aSubscriber.add(new MainThreadSubscription() {
@Override
protected void onUnsubscribe() {
existingEventSource.removeListener(listener);
}
});
fonte
2014-11-02 03:17:20
Miguel, grazie per la risposta, ma non posso farlo. Ti dispiace elaborare un po 'di più o indicarmi qualche documento o codice sorgente che riesco a leggere? – xwk
Utilizzando il metodo add, il tuo registro un lambda che verrà eseguito quando il tuo Observable è cancellato. – dwursteisen
@xwk, ho aggiunto una piccola spiegazione che, si spera, ti darà una migliore idea di cosa sta succedendo. –