我正在使用Otto by Square.我的订阅者类在Activity / Fragment onStart和onStop方法中注册.
但有时,我收到此错误
Caused by: java.lang.IllegalArgumentException: Missing event handler
for an annotated method. Is class EventListener registered?
at com.squareup.otto.Bus.unregister(Bus.java:289)
我很确定我的课程已经注册了.有没有方法知道这个类是否已注册?
// in a Fragment or Activity
@Override
public void onStart() {
super.onStart();
Bus bus = new Bus();
bus.register(eventListener); // register the class where the annotated @Subscribe method is
bus.isRegistered(); // ??
}
解决方法:
如果您尝试取消注册()尚未注册的对象或取消注册两次,则会收到此错误消息.
由于注册是基于对象的,因此您只需将boolean isRegistered成员添加到那些通常的生命周期不能保证正确配对寄存器和取消注册的类中.