2016-08-11 9 views
8

Jak wypisać się automatycznie po otrzymaniu onNext()?Rx - Jak wypisać się automatycznie po otrzymaniu onNext()?

Na razie używam tego kodu:

rxObservable 
.compose(bindToLifecycle()) // unsubscribe automatically in onPause() if method was called in onResume() 
.subscribe(new Subscriber<Object>() { 
    ... 
    @Override 
    public void onNext(Object o) { 
     unsubscribe(); 
    } 
}); 
+0

pytanie wymaga więcej kontekstu, aby inni, aby pomóc Ci go odebrać. – ericmjl

Odpowiedz

13

I chcesz się „wypisać” po pierwszym razie, operator take jest droga.

rxObservable.compose(bindToLifecycle()) 
      .take(1) 
      .subscribe(); 
+1

Dzięki. Wygląda na to, że "first()" jest tym, czego potrzebuję. –

+3

Istnieje subtelna różnica między 'take (1)' i 'first':' first' wysyła błąd z pustym strumieniem. 'take (1)' doesnt. (musisz więc sprawdzić, który z nich potrzebujesz, biorąc pod uwagę kontekst) – dwursteisen

1

myślę, że to jest to, czego potrzebujesz:

rxObservable.compose(bindToLifecycle()) 
      .takeFirst(lifecycleEvent -> lifecycleEvent == LifecycleEvent.PAUSE); 
Powiązane problemy