Подпишитесь и опубликуйте одно и то же событие из того же класса

Я использую Greenrobot EventBus 3.0.0. У меня есть класс A, и он получил событие объекта. В классе A я изменил этот объект и передал его следующему действию B.

@Override
    protected void onStart() {
        super.onStart();
  EventBus.getDefault().register(this);
  }


    @Override
    public void onStop() {
        super.onStop();
        EventBus.getDefault().unregister(this);
    } 


@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
    public void onRowClicked(RequestDTO requestDTO) {
        if (requestDTO!= null) {
            EventBus.getDefault().post(requestDTO);
            startActivity(new Intent(this, ActivityB.class));
        }

    }

Проблема в том, что он застрял в бесконечном цикле, потому что издатель и подписчик имеют одно и то же событие. Как решить эту проблему?


person Meonix    schedule 15.06.2017    source источник
comment
Опубликовать другой тип события, не тот же самый. В чем проблема с таким подходом?   -  person azizbekian    schedule 15.06.2017


Ответы (1)


Это кажется хакерским. Что вы действительно хотите сделать? Вы можете отменить регистрацию своей текущей активности непосредственно перед вызовом второй публикации вашего мероприятия. Но вы уверены, что ваша вторая активность будет подготовлена ​​системой Android, когда наступит ваше мероприятие? Это действительно не относится к обратному вызову EventBus. На вашем месте я бы передал данные в простом старом Intent. Или, если вам действительно нужна эта динамика - вы можете вручную вызвать свой метод onRowClicked своего ActivityB с этим измененным объектом RequestDTO

person kaplis    schedule 15.06.2017