EventBot:事件

时间:2016-06-22 12:30:20

标签: android interface callback fragment event-bus

问题:
对于某些通信方案,我使用的是EventBus。 我的应用程序中有一个已成功触发并由不同组件订阅的事件。 现在我需要activity来订阅该事件。不幸的是没有达成。

问题:
我怎样才能实现activity正确订阅事件呢?是注册activity

的问题

注意:
我发现post建议使用onStart()和onStop()事件。

我的活动课程:

public class MachineActivity extends AppCompatActivity{

  (...)

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

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

  @Subscribe(threadMode = ThreadMode.MAIN)
  public void characteristicsChangeByUser(IntentChangeByUser intentChangeByUser) {
    // Do something here.
  }

  (...)
}

EventBus类:

public class IntentChangeByUser {

  int position;
  int value;

  public IntentChangeByUser(int position, int value){
    this.position = position;
    this.value = value;
  }

  public int getPosition() {
    return position;
  }

  public int getValue() {
    return value;
  }
}

1 个答案:

答案 0 :(得分:1)

可能是因为您错误地在Documents中取消注册了EventBus 改为:

onStop()

然后在您的订阅者活动中确保收到了活动:

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

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