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 ?
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:
And on the other side you post the event like this:
I created a two apps and they were able to send events to each other.
The entire point of greenrobot's EventBus, like Square's Otto and
LocalBroadcastManager
, is to not use IPC.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
Another library that follows the EventBus syntax more closely is HermesEventBus. It supports IPC (and intra process) both.
Although they should have just derived from EventBus, so that we can just inject EventBus object (which is actually a HermesEventBus), and not have to update code everywhere. https://github.com/eleme/HermesEventBus