2014-04-20 6 views
7

का उपयोग कर एंड्रॉइड में आईपीसी (greenrobot) EventBus. का उपयोग करके मुझे दूरस्थ सेवा के साथ संवाद करने की आवश्यकता है दुर्भाग्यवश, यह आईपीसी के साथ काम नहीं कर रहा है। कोड को देखते हुए, मुझे कोई कामकाज नहीं दिख रहा है। किसी भी सहायता की सराहना की जाएगी !ग्रीनरोबोट इवेंटबस

बोनस प्रश्न - क्या कोई अन्य इवेंटबस (एंड्रॉइड के लिए) है जो आईपीसी का समर्थन करता है?

उत्तर

7

मुझे (ग्रीनबोट) इवेंटबस का उपयोग करके रिमोट सेवा के साथ संवाद करने की आवश्यकता है।

greenrobot के EventBus की पूरी बिंदु, स्क्वायर के ओटो और LocalBroadcastManager की तरह, के लिए नहीं आईपीसी का उपयोग करें।

किसी भी मदद की सराहना की जाएगी!

आईपीसी के लिए ग्रीनबोट के इवेंटबस का उपयोग न करें। भारतीय दंड संहिता के लिए Android के असंख्य आईपीसी तंत्रों में से एक का उपयोग करें:

  • startActivity()
  • startActivityForResult()
  • startService()
  • bindService()
  • sendBroadcast() और उसके रूपों (जैसे, sendOrderedBroadcast())
  • एक ContentProvider
+0

आपके उत्तर के लिए धन्यवाद। जैसा कि मैंने उल्लेख किया है, मैं एक "दूरस्थ सेवा" का उपयोग कर रहा हूं, और कुछ डेटा को कई ऐप्स में संचारित करना चाहता हूं। अभी के लिए उपभोक्ता ऐप्स निर्माता को मतदान कर रहे हैं (एआईडीएल का उपयोग कर); लेकिन मैं इसे असीमित बनाना चाहता था। क्या मैंने गलत दृष्टिकोण लिया है? – SlowAndSteady

+2

@राज: परिवर्तनों के बारे में उपभोक्ता ऐप्स को सूचित करने के लिए प्रसारण 'इरादों' का उपयोग करें। – CommonsWare

+2

फिर से धन्यवाद! चूंकि इवेंटबस (greerobot) खुद को एंड्रॉइड प्रसारण प्रणाली से बेहतर होने का दावा करता है (उनके एफएक्यू देखें) - मैं सोच रहा था कि क्या वे आईपीसी का समर्थन करते हैं। ऐसा लगता है कि वे समर्थन नहीं करते हैं, इसलिए मैं प्रसारण के लिए गिर जाएगी। – SlowAndSteady

5

एक आईपीसी इवेंटबस विकल्प है जो आपको आईपीसी पर ईवेंट भेजने की अनुमति देता है।

public class Listener implements IIpcEventBusConnectionListener, IIpcEventBusObserver { 

    public Listener() { 
     String targetApp = "com.packagename"; 
     IIpcEventBusConnector connector = 
      ConnectorFactory.getInstance().buildConnector(context, this, targetApp); 
     connector.startConnection(); 
    } 

    @Override 
    public void onConnected(IIpcEventBusConnector connector) { 
     connector.registerObserver(this); 
    } 

    @Override 
    public void onEvent(IEventIpc event) { 
     Log.d("ipceventbus", "Received event: " + event.getClass()); 
    } 

    @Override 
    public void onDisconnected(IIpcEventBusConnector connector) { 

    } 
} 

और दूसरी तरफ आप इस तरह की घटना के बाद:

IpcEventBus.getInstance().postEvent(new MyEvent()); 

https://github.com/NewtronLabs/IpcEventBus

तुम सब एक घटना प्राप्त करने के लिए क्या करना है प्रलेखन के अनुसार यह है मैंने दो ऐप्स बनाए और वे एक-दूसरे को ईवेंट भेजने में सक्षम थे।

0

इवेंटबस वाक्यविन्यास का पालन करने वाली एक और लाइब्रेरी हर्मेसइवेंटबस है। यह आईपीसी (और इंट्रा प्रोसेस) दोनों का समर्थन करता है।

हालांकि उन्हें अभी इवेंटबस से व्युत्पन्न होना चाहिए था, ताकि हम केवल EventBus ऑब्जेक्ट को इंजेक्ट कर सकें (जो वास्तव में एक हर्मेसइवेंटबस है), और हर जगह कोड अपडेट नहीं करना है। https://github.com/eleme/HermesEventBus

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