从同一个类订阅和发布相同的事件

时间:2017-06-15 12:42:30

标签: android greenrobot-eventbus

我正在使用Greenrobot EventBus 3.0.0。我有一个A类,它收到了一个Object Event。在A类中,我修改了该对象并将其传递给下一个Activity 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));
        }

    }

问题是它陷入了无限循环,因为发布者和订阅者的事件相同。如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

这看起来很善良。你真的想做什么?您可以在调用事件的第二个帖子之前取消注册当前活动。但是您确定,当您的活动进入时,您的第二项活动将由Android系统准备好吗?对于EventBus回调,情况并非如此。如果我是你,我会传递普通旧意图中的数据。或者,如果您真的需要这种动态 - 您可以使用修改后的onRowClicked对象手动调用ActivityB的RequestDTO方法