Android EventBus - hasSubscriberForEvent() 总是 return 错误
Android EventBus - hasSubscriberForEvent() always return false
据我了解,如果我正在侦听此 eventClass
上的任何事件,则来自 EventBus 的方法 hasSubscriberForEvent(Class<?> eventClass)
应该 return 为真。但它总是 return 错误,我不确定为什么。
在我的片段中,我注册和注销了 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
有任何注册,则 return 为真,否则 return 为假。
我是不是遗漏了什么,或者 hasSubscriberForEvent()
不是这样的?
注意: 如果我这样做 EventBus.getDefault().post(new MyDummyObject());
事件会触发,所以我假设 EventBus 正在成功注册和注销。
看来是我理解错了方法hasSubscriberForEvent
!
我不得不改变:
EventBus.getDefault().hasSubscriberForEvent(MyFragment.class);
至:
EventBus.getDefault().hasSubscriberForEvent(MyDummyObject.class)
参数是我们正在监听的对象类型,而不是注册和注销EventBus的class。
有关详细信息,请查看 this link 中对此功能的请求。
据我了解,如果我正在侦听此 eventClass
上的任何事件,则来自 EventBus 的方法 hasSubscriberForEvent(Class<?> eventClass)
应该 return 为真。但它总是 return 错误,我不确定为什么。
在我的片段中,我注册和注销了 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
有任何注册,则 return 为真,否则 return 为假。
我是不是遗漏了什么,或者 hasSubscriberForEvent()
不是这样的?
注意: 如果我这样做 EventBus.getDefault().post(new MyDummyObject());
事件会触发,所以我假设 EventBus 正在成功注册和注销。
看来是我理解错了方法hasSubscriberForEvent
!
我不得不改变:
EventBus.getDefault().hasSubscriberForEvent(MyFragment.class);
至:
EventBus.getDefault().hasSubscriberForEvent(MyDummyObject.class)
参数是我们正在监听的对象类型,而不是注册和注销EventBus的class。
有关详细信息,请查看 this link 中对此功能的请求。