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