Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

IPC in Android using GreenRobot eventbus

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 ?

like image 331
dev Avatar asked Apr 20 '14 22:04

dev


2 Answers

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())
  • a ContentProvider
like image 182
CommonsWare Avatar answered Nov 05 '22 23:11

CommonsWare


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.

like image 5
J_Strauton Avatar answered Nov 05 '22 22:11

J_Strauton