我从在非主线程中运行的服务发布 EventBus.getDefault().post(new SendPlayer(player));
:
<service
android:name=".player.PlayerService"
android:process=":player"
android:enabled="true"
android:exported="true">
</service>
我希望在我的 fragment 中收到:
@Subscribe(threadMode = ThreadMode.MAIN) public void onEvent(SendPlayer event) {
Log.w("mcheck", "onEvent");
}
但是,我收到消息:
D/EventBus:没有为事件类 yarh.com.tryexo.player.SendPlayer 注册订阅者
。
仅当我删除 android:process=":player"
时才会传递事件。
这是一个错误还是我误解了后台线程和主线程之间的发布事件流程?
最佳答案
process
属性使您的 PlayerService
在其自己的单独进程中运行,就像完全不同的应用程序一样。
这就像尝试从另一个完全不同的应用程序中触发一个应用程序中的事件。您将需要找到一种不同的方式来与您的服务进行通信,或者将所有需要通信的组件放置在同一进程中。
关于android - 后台服务发布的事件没有订阅者,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36688945/