Как отправить событие из Activity в сервис с помощью шины событий greenrobot?
Простой EventBus.getDefault(). Post() выводит исключение, а не основной поток. Как отправить событие из Activity в сервис с помощью шины событий greenrobot?
chronometer = (Chronometer)findViewById(R.id.chrono);
chronometer.setBase(SystemClock.elapsedRealtime());
chronometer.setOnChronometerTickListener(new Chronometer.OnChronometerTickListener() {
@Override
public void onChronometerTick(Chronometer arg0) {
long countUp = (SystemClock.elapsedRealtime() - arg0.getBase()) / 1000;
String asText = (countUp / 60) + ":" + (countUp % 60);
Log.e("asText", "asText" + asText);
ChronometerEvents event=new ChronometerEvents();
event.setTime(asText);
bus.post(event);
}
});
public class ChronometerEvents {
private String time;
public ChronometerEvents() {
}
public String getTime() {
return time;
}
public void setTime(String time) {
this.time = time;
}
}
public void onEvent(ChronometerEvents freq) {
Log.e("Chronometer", "Chronometer" + freq.getTime());
}
класс обслуживания
public class NewLocationUpdateService extends Service {
private EventBus bus = EventBus.getDefault();
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
bus.unregister(this);
return START_NOT_STICKY;
}
@Override
public IBinder onBind(Intent intent) {
return binder;
}
@Override
public boolean onUnbind(Intent intent) {
return super.onUnbind(intent);
}
public void onEvent(ChronometerEvents freq) {
Log.e("Chronometer", "Chronometer" + freq.getTime());
}
}
Можно ли отправить с помощью шины событий Greenrobot?
1 ответ
Я настоятельно рекомендую пересмотреть вашу архитектуру здесь. EventBus не предназначен для того, чтобы пересекать границы процессов, и сервисы Android не легко поддаются этой идее.
EventBus - отличный инструмент, но его очень легко использовать.
Если вы хотите отправить информацию из Деятельности в Службу, лучше всего использовать Intent, но если вам действительно необходимо более тесное взаимодействие, вам следует обратить внимание на связывание. Eventbus не должен заменять эти взаимодействия.