今天在使用EventBus的时候,遇到如下问题:
1. 注册:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
EventBus.getDefault().register(this);
}
2. 注销:
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
3. 接收消息
public void onEventMainThread(MessageEvent event) {
Toast.makeText(this, event.message, Toast.LENGTH_SHORT).show();
}
每次进到这个页面,都会挂掉,最后发现要在 onEventMainThread 这个回调方法上加上 @Subscribe 注解就可以了,如下:
@Subscribe
public void onEventMainThread(MessageEvent event) {
Toast.makeText(this, event.message, Toast.LENGTH_SHORT).show();
}
续:
使用eventbus_3.0.0.jar时,在onEventMainThread里面调用Toast.makeText(this, event.message, Toast.LENGTH_SHORT).show();
结果报Can't create handler inside thread that has not called Looper.prepare()
最后发现还是onEventMainThread这个方法的问题,修改为:
@Subscribe(threadMode = ThreadMode.MainThread)
public void onMessageEvent(MessageEvent event) {
Toast.makeText(this, event.message, Toast.LENGTH_SHORT).show();
}