2016-08-11 18 views
8

onNext()の受信後に自動的に退会する方法は?今のRx - onNext()を受信した後に自動的に退会する方法は?

私はこのコードを使用します。

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

質問は、あなたがそれに答えるために他の人のためのために、より多くのコンテキストを必要とします。 – ericmjl

答えて

13

私はあなただけの最初のイベントの後、オペレータtakeが進むべき道である「退会」にしたいです。

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

ありがとうございます。 "first()"のようなものが私の必要なものです。 –

+3

'take(1)'と 'first'の間には微妙な違いがあります:' first'は空のストリームでエラーを出します。 'take(1)'はしません。 (コンテキストについては、どちらを確認する必要があります) – dwursteisen

1

私は、これは何が必要だと思う:

rxObservable.compose(bindToLifecycle()) 
      .takeFirst(lifecycleEvent -> lifecycleEvent == LifecycleEvent.PAUSE); 
関連する問題