使用流程##
- 增加EventBus依赖(eclipse增加jar包)
- 在需要接收eventBus的界面中进行注册与反注册
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EventBus.getDefault().register(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
EventBus.getDefault().unregister(this);
}
- 定义一个用于接收事件的方法
@Subscribe(threadMode = ThreadMode.MAIN) //注意:这里的注解不加及方法修饰符不为public会报异常
public void onEventMainThread(MessageEvent event) {
//do something
}
- 如果想指定接收的方法该如何操作呢?
这里举个例子:
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(MessageEvent event) {
//do something
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onEventMainThread(String str) {
//do something
}
5.post一个消息
EventBus.getDefault().post("FirstEvent btn clicked");
上面是两个接收EventBus事件的函数,看见哪里有区别了吗?没错!EventBus会根据你post的消息的类型进行选择对应的接收函数,所以说我们要想指定我们想要接收的函数,只要处理好函数的参数类型即可。
注意事项##
- 只有在需要接收EventBus消息的界面才需要对EventBus进行注册及反注册
- 接收EventBus消息的函数需要增加@Subscribe 注解,否则会报异常
- 接受EventBus消息的函数需要定义成public,否则会报和第二个相同的异常