Esiste un'opzione EventBus IPC che consente di inviare eventi su IPC. https://github.com/NewtronLabs/IpcEventBus
Secondo la documentazione tutto ciò che dovete fare per ottenere un evento è questa:
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) {
}
}
E dall'altra parte si registra l'evento come questo:
IpcEventBus.getInstance().postEvent(new MyEvent());
Ho creato due app e sono state in grado di inviare gli eventi a vicenda.
fonte
2016-09-19 06:37:47
Grazie per la risposta. Come ho detto, sto usando un "servizio remoto" e voglio che alcuni dati vengano comunicati a più app. Per ora le app dei consumatori stanno interrogando il produttore (usando AIDL); ma volevo renderlo asincrono. Ho preso un approccio sbagliato? – SlowAndSteady
@Raj: usa "Intenti" di trasmissione per notificare alle app dei consumatori le modifiche. – CommonsWare
Grazie ancora! Poiché Eventbus (greerobot) si afferma essere migliore del sistema di trasmissione Android (fare riferimento alle loro FAQ) - Mi chiedevo se supportano IPC. Sembra che non supportino, quindi ricollegherò alle trasmissioni. – SlowAndSteady