- 闲话说说Android的通信机制,Android的通信方式有蛮多,intent、broadcast、进程间通信等等。但是不管哪种通信都没有彻底解耦,早些年使用过sybase的数据库中间介,需求是必须保证客户端和服务端数据库的绝对同步,当时sybase采用的解决方案就是在客户端订阅消息,服务端有任何数据变动,都可以一条事件总线发布。有幸在github上找了一个成熟的库eventbus。
集成EventBus
build.gradle 引用
compile 'de.greenrobot:eventbus:2.4.0'
事件的定义
public static class ServerCenterUpdateEvent {
private int serverId;
public ServerCenterUpdateEvent(int serverId) {
this.serverId = serverId;
}
public int getServerId() {
return serverId;
}
}
事件的注册
EventBus.getDefault().registerSticky(this);
事件的反注册
EventBus.getDefault().unregister(this);
事件的发送
EventBus.getDefault().post(new TLEvents.ServerCenterUpdateEvent(item.getSvId()));
事件的接收
/**
* 消息数量发生改变时刷新
*
* @param serverCenterUpdateEvent
*/
public void onEventMainThread(TLEvents.ServerCenterUpdateEvent serverCenterUpdateEvent) {
LogUtil.d("changeServerID:" + serverCenterUpdateEvent.getServerId());
EventBus.getDefault().removeStickyEvent(TLEvents.ServerCenterUpdateEvent.class);
}