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