我可以使用greenrobot EventBus进行活动和服务之间的沟通吗?

关于服务交stream,我可以使用EventBus库作为活动吗?

我在我的应用程序尝试这个如下:

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); EventBus.getDefault().register(this); setContentView(R.layout.activity_music_player); Intent serviceIntent=new Intent(MusicPlayerActivityTest.this,MusicPlayerServiceTest.class); startService(serviceIntent); EventBus.getDefault().post(new SetSongList(songArraList, 0)); } @Override protected void onDestroy() { EventBus.getDefault().unregister(this); super.onDestroy(); } 

并在我的服务onEvent调用。

Solutions Collecting From Web of "我可以使用greenrobot EventBus进行活动和服务之间的沟通吗?"

你必须注册订户,而不是发射器。

因此,如果您希望获得该活动,请从您的应用程序中删除注册/取消注册。 如果是这样,只需将onEvent (AnyEvent事件)方法添加到Application类。

然后在onStart()中的服务中注册EventBus,并在onStop()取消注册。

那应该会更好。

在你的应用程序

 public class MyApp extend Application { @Override public void onCreate() { super.onCreate(); ... EventBus.getDefault().post(new SetSongList(songArraList, 0)); } } 

或在您的活动

 public class MyActivity extend Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); ... EventBus.getDefault().post(new SetSongList(songArraList, 0)); } } 

并在您的服务

 public class MyService extends Service { ... @Override public void onCreate() { super.onCreate(); EventBus.getDefault().register(this); } @Override public void onDestroy() { EventBus.getDefault().unregister(this); super.onDestroy(); } public void onEvent(SetSongList event){ // do something with event } ... }