EventBus是针一款对Android的发布/订阅事件总线。它可以让我们很轻松的实现在Android各个组件之间传递消息,并且代码的可读性更好,耦合度更低。
一、代码集成
1、下载jar包,并且添加library
2、写一个接受消息的虚类
public abstract class OnEvent {
@Subscribe(threadMode = ThreadMode.MainThread)
public void onMessage(TestEvent event) {onReceived(event);}
public abstract void onReceived(TestEvent event);
}
3、写一个传递消息内容的类
public class TestEvent {
public int num;
public String value;
}
4、EventBus处理
public class EventManager {
public static void register(Object object) {
if (!EventBus.getDefault().isRegistered(object)) {
EventBus.getDefault().register(object);
}
}
public static void unregister(Object object) {
if (EventBus.getDefault().isRegistered(object)) {
EventBus.getDefault().unregister(object);
}
}
public static void post(Object object) {
EventBus.getDefault().post(object);
}
public static void postTest(int num, String value) {
TestEvent event = new TestEvent();
event.num = num;
event.value = value;
post(event);
}
}
二、使用EventBus的封装类
1、注册event事件
// 注册EventBus
EventManager.register(event);
2、处理业务
private OnEvent event = new OnEvent() {
@Override
public void onReceived(TestEvent event) {
nameTextView.setText(event.num + "\n" + event.value);
}
};
3、在另外一个activity发送event
EventManager.postTest(1, "aaa");
三、遇到的坑
异常:
原因:接收消息的类OnEvent 中的onMessage方法写成了private,但是该方法是给EventBus回调的,写成private则会造成无法回调,修改成public即可。