簡體   English   中英

使用GreenRobot事件總線的Android中的IPC

[英]IPC in Android using GreenRobot eventbus

我需要使用(greenrobot)EventBus與遠程服務進行通信 不幸的是,它似乎不適用於IPC。 看看代碼,我也沒有看到解決方法。 任何幫助,將不勝感激 !

獎金問題 - 是否還有支持IPC的其他EventBuses(適用於Android)?

我需要使用(greenrobot)EventBus與遠程服務進行通信。

greenobot的EventBus的全部內容,如Square的Otto和LocalBroadcastManager ,是使用IPC。

任何幫助,將不勝感激 !

不要將greenrobot的EventBus用於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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM