2016-08-11 9 views
8

अगला() प्राप्त करने के बाद स्वचालित रूप से सदस्यता समाप्त कैसे करें?आरएक्स - अगला() प्राप्त करने के बाद स्वचालित रूप से सदस्यता समाप्त कैसे करें?

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

धन्यवाद। ऐसा लगता है कि "पहली()" मुझे चाहिए। –

+3

'टेक (1)' और 'पहले' के बीच एक सूक्ष्म अंतर है: 'पहले' खाली स्ट्रीम के साथ एक त्रुटि उत्सर्जित करें। 'ले लो (1) 'नहीं। (इसलिए आपको यह जांचना होगा कि आपको किस संदर्भ की आवश्यकता होगी, संदर्भ के संबंध में) – dwursteisen

1

मुझे लगता है कि यह है कि तुम क्या जरूरत है: दूसरों के लिए आप इसे उत्तर देने के लिए

rxObservable.compose(bindToLifecycle()) 
      .takeFirst(lifecycleEvent -> lifecycleEvent == LifecycleEvent.PAUSE); 
संबंधित मुद्दे

 संबंधित मुद्दे