I need to communicate with a remote service, using (greenrobot) EventBus. Unfortunately, it does not seem to work with IPC. Looking at the code, I don't see a workaround either. Any help would be appreciated !
Bonus question - are there any other EventBuses (for Android) which support IPC ?
I need to communicate with a remote service, using (greenrobot) EventBus.
The entire point of greenrobot's EventBus, like Square's Otto and LocalBroadcastManager, is to not use IPC.
Any help would be appreciated !
Don't use greenrobot's EventBus for IPC. Use one of Android's myriad IPC mechanisms for IPC:
startActivity()startActivityForResult()startService()bindService()sendBroadcast() and its variations (e.g., sendOrderedBroadcast())ContentProvider
There is an IPC EventBus option which allows you to send events over IPC. https://github.com/NewtronLabs/IpcEventBus
According to the documentation all you have to do to get an event is this:
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) {
    }
}
And on the other side you post the event like this:
IpcEventBus.getInstance().postEvent(new MyEvent());
I created a two apps and they were able to send events to each other.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With