android 使用EventBus的异常

今天在使用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();

}

原文地址:https://www.cnblogs.com/zhaoqingyue/p/6564386.html