【问题标题】:EventBot: subscribing activity is not reached by EventEventBot:事件未达到订阅活动
【发布时间】:2016-10-24 09:32:19
【问题描述】:

问题:
对于某些通信场景,我使用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;
  }
}

【问题讨论】:

    标签: android interface callback fragment event-bus


    【解决方案1】:

    可能是因为您在 onStop() 中注销 EventBus 的方法有误。
    改为:

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

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

    @Subscribe(threadMode = ThreadMode.MAIN)
    public void characteristicsChangeByUser(IntentChangeByUser intentChangeByUser) {
      // Do something here.
      Log.d("Activity", "IntentChangeByUser Event received");
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多