9

我需要使用(greenrobot)EventBus 与远程服务通信。不幸的是,它似乎不适用于 IPC。查看代码,我也没有看到解决方法。任何帮助,将不胜感激 !

额外的问题 - 是否有任何其他支持 IPC 的 EventBus(适用于 Android)?

4

3 回答 3

7

我需要使用(greenrobot)EventBus 与远程服务通信。

与 Square 的 Otto 和 一样,greenrobot 的 EventBus 的全部意义LocalBroadcastManager在于使用 IPC。

任何帮助,将不胜感激 !

不要将 greenrobot 的 EventBus 用于 IPC。为 IPC 使用 Android 的无数 IPC 机制之一:

  • startActivity()
  • startActivityForResult()
  • startService()
  • bindService()
  • sendBroadcast()及其变体(例如,sendOrderedBroadcast()
  • 一个ContentProvider
于 2014-04-20T23:01:52.003 回答
5

有一个 IPC EventBus 选项允许您通过 IPC 发送事件。https://github.com/NewtronLabs/IpcEventBus

根据文档,您要获得事件所需要做的就是:

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());

我创建了两个应用程序,它们能够相互发送事件。

于 2016-09-19T06:37:47.447 回答
0

另一个更接近 EventBus 语法的库是 HermesEventBus。它同时支持 IPC(和进程内)。

虽然它们应该只是从 EventBus 派生的,所以我们可以只注入 EventBus 对象(实际上是一个 HermesEventBus),而不必到处更新代码。 https://github.com/eleme/HermesEventBus

于 2017-03-20T04:48:34.323 回答