什么是EventBus
EventBus是Android下高效的发布/订阅事件总线机制。作用是可以代替传统的Intent,Handler,Broadcast或接口回调函数在Fragment,Activity,Service,线程之间传递数据,执行方法。
特点是代码简洁,是一种发布订阅设计模式(Publish/Subsribe),或称作观察者设计模式。让模块与模块之间解耦。
如何下载
- Github主页:https://github.com/greenrobot/EventBus下载源码自行编译jar包
AndroidStudio中之间所有maven依赖eventbus或者build.gradle中添加依赖
compile 'de.greenrobot:eventbus:2.4.0'
如何使用,分几步?三步
定义Event
可以是任意Object,用于区分事件类型和传输数据public class AnyEventType { public Object anyData; }
订阅者注册与注销:
//注册 EventBus.getDefault().register(this);//this为订阅者对象 //处理 public void onEvent(AnyEventType event){ //Do somethings as you like } public void onEventMainThread(AnyEventType event) public void onEventBackgroundThread(AnyEventType event) public void onEventAsync(AnyEventType event) //注销 EventBus.getDefault().unregister(this);//this为订阅者对象
发布者发布事件:
//发布Event EventBus.getDefault().post(event); //发布粘性事件: EventBus.getDefault().postSticky(event); //默认post的事件分发完毕会被从内存中删除。postSticky可以将Event另外保存到一个map中put(event.getClass(), event); //通过EventBus.getDefault().getStickyEvent(Class<?> eventType)拿到最后一次发布的Event
EventBus的局限性
无法进程间通信