0

据我了解,hasSubscriberForEvent(Class<?> eventClass)如果我正在侦听 this 上的任何 Event,EventBus 的方法应该返回 true eventClass。但它总是返回假,我不知道为什么。

在我的片段中,我注册和注销 EventBus,并声明监听 Post 的方法:

@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
    EventBus.getDefault().register(this);
    super.onCreate(savedInstanceState);
}

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

public void onEvent(MyDummyObject event) {
    Log.i(TAG,"event received!");
}

在我的服务中,我需要检查这个 Fragment 是否可见,我假设的一种方法是使用EventBus.getDefault().hasSubscriberForEvent(MyFragment.class). 我预计如果 EventBus 会看到MyFragment已注册的任何内容将返回 true,否则将返回 false。

我错过了什么,或者hasSubscriberForEvent()没有这样的行为吗?

注意:如果我确实EventBus.getDefault().post(new MyDummyObject());触发了事件,那么我假设 EventBus 正在成功注册和注销。

4

1 回答 1

3

看来我误解了方法hasSubscriberForEvent

我不得不改变:

EventBus.getDefault().hasSubscriberForEvent(MyFragment.class);

至:

EventBus.getDefault().hasSubscriberForEvent(MyDummyObject.class)

该参数是我们正在侦听的对象类型,而不是注册和注销 EventBus 的类。

有关更多信息,请在此链接中查看此功能的请求。

于 2015-11-20T11:32:22.697 回答