2

poste ich EventBus.getDefault().post(new SendPlayer(player)); von einem Dienstleistungen, die in Nicht-Haupt-Thread ausgeführt wird:keine Abonnenten für Veranstaltungen von Hintergrunddienst geschrieben

<service 
    android:name=".player.PlayerService" 
    android:process=":player" 
    android:enabled="true" 
    android:exported="true"> 
</service> 

ich auch in meinem Fragment erhalten erwarten:

@Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(SendPlayer event) { 
    Log.w("mcheck", "onEvent"); 
} 

jedoch Ich bekomme eine Nachricht:
D/EventBus: No subscribers registered for event class yarh.com.tryexo.player.SendPlayer.

Ereignisse werden nur geliefert, wenn ich android:process=":player" entferne.

Ist es ein Bug oder ich missverstanden Fluss von Buchungsereignissen zwischen Hintergrund-Thread und Haupt-Thread?

+0

Verwenden Sie einfach "gebunden Service" -Muster (höchstwahrscheinlich mit AIDL) – pskink

Antwort

2

Das Attribut process bewirkt, dass Ihr PlayerService in einem eigenen separaten Prozess läuft, ähnlich wie eine völlig andere App.

Dies ist wie der Versuch, ein Ereignis in einer App aus einer anderen völlig anderen App auszulösen. Sie müssen einen anderen Weg finden, um mit Ihrem Dienst zu kommunizieren oder alle Komponenten, die in demselben Prozess kommunizieren müssen, zu platzieren.