2

EventBus.getDefault().post(new SendPlayer(player));非メインスレッドで実行されているサービスから投稿します。

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

私は自分のフラグメントでも受け取ることを期待しています:

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

ただし、次のメッセージが表示されます
D/EventBus: No subscribers registered for event class yarh.com.tryexo.player.SendPlayer

を削除した場合にのみ、イベントが配信されandroid:process=":player"ます。

これはバグですか、それともバックグラウンド スレッドとメイン スレッドの間でイベントをポストするフローを誤解していましたか?

4

1 に答える 1

2

このprocess属性によりPlayerService、まったく別のアプリのように、独自の個別のプロセスで実行されます。

これは、あるアプリで別のまったく別のアプリからイベントを発生させようとするようなものです。サービスと通信する別の方法を見つけるか、通信する必要があるすべてのコンポーネントを同じプロセスに配置する必要があります。

于 2016-04-18T08:34:37.493 に答える