我需要使用(greenrobot)EventBus 与远程服务通信。不幸的是,它似乎不适用于 IPC。查看代码,我也没有看到解决方法。任何帮助,将不胜感激 !
额外的问题 - 是否有任何其他支持 IPC 的 EventBus(适用于 Android)?
我需要使用(greenrobot)EventBus 与远程服务通信。不幸的是,它似乎不适用于 IPC。查看代码,我也没有看到解决方法。任何帮助,将不胜感激 !
额外的问题 - 是否有任何其他支持 IPC 的 EventBus(适用于 Android)?
我需要使用(greenrobot)EventBus 与远程服务通信。
与 Square 的 Otto 和 一样,greenrobot 的 EventBus 的全部意义LocalBroadcastManager
在于不使用 IPC。
任何帮助,将不胜感激 !
不要将 greenrobot 的 EventBus 用于 IPC。为 IPC 使用 Android 的无数 IPC 机制之一:
startActivity()
startActivityForResult()
startService()
bindService()
sendBroadcast()
及其变体(例如,sendOrderedBroadcast()
)ContentProvider
有一个 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());
我创建了两个应用程序,它们能够相互发送事件。
另一个更接近 EventBus 语法的库是 HermesEventBus。它同时支持 IPC(和进程内)。
虽然它们应该只是从 EventBus 派生的,所以我们可以只注入 EventBus 对象(实际上是一个 HermesEventBus),而不必到处更新代码。 https://github.com/eleme/HermesEventBus