Android中的Activity, Fragment, Service之间的交互是比较麻烦的,可能我们第一想到的是使用广播接收器来在它们之间进行交互。
例如上述所说在Activity-B中发一个广播,在Activity-A中注册一个广播接收器来接受该广播。但使用广播接收器稍显麻烦,如果你
要将一个实体类当做数据在组件之间传递,那么该实体类还得实现序列化接口,这个成本实在有点高啊!
1.使用AndroidEventBus首先需要在onCreate中注册
EventBus.getDefault().register(Object obj);
同时需要在OnDestory中取消
EventBus.getDefault().unregister(Object obj);
2.消息发送
EventBus.getDefault().post(Object obj);
EventBus.getDefault().post(Object obj,String tag);
3.消息接收
通过注解@Subscriber(tag=""),接收函数使用tag来标识可接收的事件类型.
mode=ThreadMode.POST 事件在哪个线程发布,接收函数就执行在哪个线程
MAIN 事件接收函数执行在UI线程
ASYNC事件执行在一个独立的异步线程中
4.activity之间的传递
EventBus.getDefault().postSticky(Object obj,String tag);
5.activity接收
需要注册EventBus.getDefault.registerSticky(Object obj);
然后@Subscriber(tag="")