Как отправить событие из 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 не должен заменять эти взаимодействия.

Другие вопросы по тегам