イベントバスこのライブラリをアクティビティとサービスの通信に使用できますか?
私は自分のアプリでこれを次のように試しました:
@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
で
ベストアンサー1
送信者ではなく、加入者を登録する必要があります。
したがって、イベントを取得する予定がある場合は、アプリから登録/登録解除を削除します。その場合は、onEvent
(AnyEvent イベント) メソッドを Application クラスに追加するだけです。
次に、 でサービスに EventBus を登録しonStart()
、 で登録を解除します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
}
...
}