2016-02-28 5 views
25

मैं एंड्रॉइड में इवेंटबस और आरएक्सजेवा के बीच के अंतर के बारे में उलझन में हूं। कुछ बदलाव किए जाने पर मुझे कुछ घटकों को सूचित करने के बारे में अपने मुद्दे के लिए उनमें से एक को लागू करने की आवश्यकता है, ताकि वे अपने राज्य को अपडेट कर सकें।
इसके अलावा, मैंने पढ़ा है कि घटनाक्रम बुस RxJava पर बहिष्कृत हो गया है और मुझे नहीं पता कि यह जानकारी सही है या नहीं।इवेंटबस और आरएक्सजेवा के बीच क्या अंतर है?

+2

जहां तक ​​मुझे पता है, वे थोड़ा अलग उद्देश्यों की सेवा करते हैं, लेकिन मूल रूप से, आरएक्सजेवा इवेंटबस –

+2

[एंड्रॉइड प्रो एंड कंस: इवेंट बस और आरएक्सजेवा] के संभावित डुप्लिकेट (http://stackoverflow.com/) से अधिक कर सकता है प्रश्न/30147877/एंड्रॉइड-प्रोस-कंस-इवेंट-बस-एंड-आरएक्सजेवा) –

+5

ओटो को बहिष्कृत किया गया है लेकिन ग्रीनरोबोट नहीं है। http://greenrobot.org/eventbus/ – Kuffs

उत्तर

71

EventBus और RxJava उनकी प्रकृति में अलग हैं।

EventBus सिर्फ bus नाम के सुझाव के रूप में है - यह "बस" में घटनाओं को सब्सक्राइब करने और प्रकाशित करने के लिए तंत्र प्रदान करता है, बिना किसी देखभाल के, तारों को कैसे किया जाता है, यह "बस" वास्तव में क्या होता है। एंड्रॉइड का संदर्भ, EventBus कम बॉयलरप्लेट वाले Broadcast संदेशों को भेजने और प्राप्त करने का सौदा करने का एक आसान तरीका है।

RxJava दूसरी तरफ उससे कहीं अधिक शक्तिशाली है। हां, आप घटनाओं की सदस्यता ले सकते हैं और प्रकाशित कर सकते हैं, लेकिन प्रक्रिया पर अधिक नियंत्रण है - आवृत्ति, जिस पर थ्रेड सबकुछ होता है, आदि। RxJava (मेरी राय में) की मुख्य शक्ति यह है कि आप डेटा को बहुत आसान प्रकाशित कर सकते हैं , इसके कुछ टन operators का उपयोग कर।

सारांश में - यदि आप केवल कुछ घटनाओं का प्रकाशन और जब प्राप्त कुछ कार्यों का निष्पादन के बारे में परवाह - आप शायद दो का सबसे सरल, अर्थात् Bus किसी तरह का, या यहाँ तक कि सादे पुराने BroadcastReceiver s का उपयोग करके बेहतर होगा। यदि आपको डेटा को बदलने, थ्रेडिंग या सरलीकृत त्रुटि प्रबंधन को संभालने का भी लाभ होगा - RxJava दृष्टिकोण के लिए जाएं। बस ध्यान रखें कि RxJava में आमतौर पर एक सीधी सीखने की वक्र होती है, इसलिए इसकी अवधारणा में उपयोग करने में कुछ समय लगता है।

+0

आपके उत्तर के लिए धन्यवाद। EventBus का उपयोग करने के नुकसान क्या हैं? क्या यह आरएक्सजेवा की तुलना में सीमित है? – HiddenDroid

+2

@HiddenDroid हां यह है; आप इवेंटबस के साथ आगे बढ़ सकते हैं लेकिन मेरी राय में आरएक्सजेवा के पास अपने ऑपरेटरों के साथ बहुत कुछ है। आरएक्सजेवा लोकप्रियता प्राप्त कर रहा है (वास्तव में केवल आरएक्सजेवा नहीं, सामान्य रूप से प्रतिक्रियाशील प्रोग्रामिंग) और आप पाएंगे कि कई पुस्तकालयों में इसे अपने एपीआई (उदाहरण के लिए, रेट्रोफिट) में शामिल किया गया है। एक तरफ ध्यान दें, इसका उपयोग करने के बाद इसका उपयोग करना वास्तव में सुविधाजनक है। – mewa

+2

@HiddenDroid: 'EventBus' के किसी भी विशिष्ट नुकसान के बारे में नहीं सोच सकता- यह हमेशा आपके कार्य के लिए आता है। जैसा कि मैंने अपने जवाब में कहा - अगर आपको केवल कुछ घटनाओं को कुछ/प्रतिक्रिया देने की आवश्यकता है - बस पूरी तरह से काम करेगी। यदि आपका कार्य उससे अधिक जटिल है - शायद यह अन्य समाधानों की खोज करने लायक है। यह चाल कार्य के लिए सही उपकरण ढूंढना है, इसलिए आपको खुद को RxJava में धक्का देने की आवश्यकता नहीं है यदि आपको केवल 1-2 ब्रॉडकास्ट रिसीवर हैं ... – Vesko

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