मान लें कि मेरे पास एक प्रोसेसर है जो एक बटन दबाए जाने पर एक बूलियन मान उत्सर्जित करता है, इसे टॉगल के रूप में सोचें।RxJava 2.X में एक बूलियन गेट के आधार पर एक अवलोकन योग्य को फिर से शुरू करें और फिर से शुरू करें?
boolean gateValue = true;
PublishProcessor<Boolean> gate = PublishProcessor.create();
view.onButtonClicked()
.subscribe(new Action1<Void>() {
@Override
public void call(final Void aVoid) {
gate.onNext(gateValue = !gateValue);
}
}));
मैं करना चाहते हैं क्या रोक सकते हैं और एक नमूदार अनुक्रम फिर से शुरू करने, उत्सर्जित मूल्यों बफरिंग जबकि रुका हुआ फाटक के मूल्य का उपयोग है।
मैंने इसमें बहुत कुछ पढ़ा है और जबकि यह अन्य भाषाओं के लिए प्रतिक्रियाशील एक्सटेंशन में संभव लगता है, तो आरएक्सजेवा इसका समर्थन नहीं कर रहा है।
यहां एक उदाहरण है जो मैं प्राप्त करना चाहता हूं, यह हर सेकेंड में वृद्धिशील मूल्य को आउटपुट करता है। जब मैं बटन दबाएँ जब तक मैं इसे फिर से प्रेस उत्पादन बंद करना चाहते हैं जो चाहिए उत्पादन हर आइटम दो बटन प्रेस के बीच उत्सर्जित:
Flowable.interval(1, TimeUnit.SECONDS)
.bufferWhile(gate)
.flatMapIterable(longs -> longs)
.subscribe(new Consumer<Long>() {
@Override
public void accept(final Long aLong) throws Exception {
view.displayTime(aLong);
}
});
किसी को भी एक तरह से कुछ इस तरह प्राप्त करने के लिए पता है?
संपादित मैं कैसे प्राप्त करने के लिए इस https://medium.com/@scottalancooper/pausing-and-resuming-a-stream-in-rxjava-988a0977b771#.gj7fsi1xk
इसके लिए एक कस्टम ऑपरेटर की आवश्यकता है और मेरे पास आरएक्सजेवा 1 [यहां] (https://gist.github.com/akarnokd/1c54e5a4f64f9b1e46bdcf62b4222f08) के लिए एक संभावित कार्यान्वयन है। – akarnokd
@akarnokd क्या आप RxJava 2 के बारे में पर्याप्त जानते हैं यह जानने के लिए कि क्या मैं इसे आसानी से परिवर्तित कर सकता हूं? मैंने पढ़ा है कि कस्टम ऑपरेटरों को बनाना मुश्किल है इसलिए मुझे नहीं लगता कि मैं उस स्तर पर अभी तक –