2015-01-18 4 views
6

मेरी कोड में मैं @Subscribe एनोटेशन का उपयोग कर की घटनाओं के लिए सुन रहा हूँ के लिए एक से अधिक समय कहा जाता है:@Subscribe विधि एक ही घटना

@Subscribe 
public void orderUpdate(OrderUpdateEvent event) 

मेरे समस्या यह है कि इस विधि को कई बार कहा जाता है (1-3 रन से निर्भर करता है चलाने के लिए) एक ही घटना वस्तु के लिए।

यह है कि कैसे मैं इस घटना भेज है:

busProvider.getEventBus().postOnMain(new OrderUpdateEvent(); 

क्या इस बात का कारण हो सकता है? क्या मुझे कुछ याद आ रही है?

+0

क्या आपको पहले से ही समस्या मिली है? –

+1

हां, जैसा कि @ कॉमन्सवेयर ने सुझाव दिया है कि 'पंजीकरण रद्द नहीं किया गया था)। – skywalker

उत्तर

4

इसका कारण क्या हो सकता है?

एक संभावना यह है कि इस कार्यक्रम के तीन उदाहरण अभी भी ईवेंट बस पर पंजीकृत हैं। सुनिश्चित करें कि आप unregister() जब ऑब्जेक्ट को संदेश प्राप्त नहीं करना चाहिए।

+1

मेरे पास एक ही प्रश्न है: उदाहरण के लिए, मैंने 'रोकथाम 'विधि में' फ्रैगमेंट 'और अनियंत्रित बस को बंद करने की बजाय' @ सदस्यता 'विधि में ईवेंट प्राप्त किया है। उसके बाद मैंने फिर से 'फ्रैगमेंट' खोला, विधि 'ऑन रेस्यूम' में पंजीकृत बस और उसी घटना को प्राप्त किया जिसे मैंने पहले ही संभाला था। मैं हर बार 'फ्रैगमेंट' पर एक ही घटना प्राप्त नहीं करना चाहता हूं। कोई विचार यह कैसे बचें? –

+0

@ वोवाक्सो: मुझे नहीं पता कि यह ओटो के साथ कैसे होगा। – CommonsWare

+0

@ वोवाक्सो क्या आप वाकई एक ही घटना वस्तु है? – skywalker

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