मैं दृश्य क्लिक RxJava 2. का उपयोग कर श्रोता मैं सबसे सरल कार्यान्वयन से शुरू से एक Observable
बनाना चाहते हैं (मैं यहाँ lambdas का उपयोग नहीं करते आप इस विधि में विभिन्न प्रकार को दिखाने के लिए):RxJava 2 रद्द करने योग्य और डिस्पोजेबल के बीच क्या अंतर है?
Observable<View> viewObservable = Observable.create(new ObservableOnSubscribe<View>() {
@Override
public void subscribe(@NonNull ObservableEmitter<View> e) throws Exception {
mNewWordView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View value) {
if (!e.isDisposed()) {
e.onNext(value);
}
}
});
}
});
तो मैंने सोचा था कि onClickListener
को शून्य के लिए सेट करने के तरीके के बारे में यदि इसकी आवश्यकता नहीं है। मैंने पाया वहाँ नाम (मेरे लिए) के रूप में इसी तरह के साथ दो तरीके हैं कि:
e.setCancellable(Cancellable c);
और e.setDisposable(Disposable d);
उन्हें और जो मैं इस्तेमाल करना चाहिए के बीच क्या अंतर है?
धन्यवाद। अगर मैं रद्द करने योग्य और विस्थापित नहीं करता हूं तो क्या मुझे चेक करें (! E.isDisposed()) 'का उपयोग करना चाहिए? – Gaket
हां, डाउनस्ट्रीम निपटान कॉल isDisposed() के माध्यम से ठीक से परिलक्षित होता है इससे कोई फर्क नहीं पड़ता कि आपके पास कौन से संसाधन हैं। – akarnokd
इस मूल मामले के लिए, आपको वास्तव में इसकी आवश्यकता नहीं है, लेकिन यदि आप 'ऑनरर' उत्सर्जित करना चाहते हैं, तो इसे एक डिस्प्लेड() चेक की सलाह दी जाती है क्योंकि अगर उत्सर्जक का निपटारा किया जाता है, तो त्रुटि वैश्विक त्रुटि पर जा दी जाएगी हैंडलर जो एंड्रॉइड ऐप को अकसर अप्रत्याशित रूप से क्रैश करता है। – akarnokd