在不同的Activity间通信,你会想到什么呢?Intent,或者BroadcastReceiver。今天,我就来介绍一款更好用的小工具——EventBus。为求你看完这篇博客后就能用,所以不做深入介绍,只介绍常用的用法。
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅。以及将发送者和接收者解耦。
使用之前,要进行相关的配置,代码如下
compile 'org.greenrobot:eventbus:3.0.0'
配置完成后,就开始基本的使用了
第一步
//注册EventBus,通常在onStrat方法中执行
EventBus.getDefault().register(this);
第二步
//注销EventBus,通常在onStop方法中注销
EventBus.getDefault().unregister(this);
第三步
//在某一个地方进行消息发送(通常是在另一个组件中,例如activity、fragment等)
EventBus.getDefault().post(Object);
注意:在发送的页面是不需要注册以及取消注册的,只需要这一行代码即可。
如果多加了第一步和第三步的话,就必须加上第四步保证接收操作。
否则则会出现错误。
第四步
//接收到发送的消息
@Subscribe
public void onEvent(Object obj){
Log.d(TAG, "onEventMainThread: 接受到消息:" + Object);
}
关于@Subscribe
这个标志有三个比较重要的属性,可以在它后面的括号里进行设置
threadMode:声明事件订阅函数的执行模式
sticky:表示该事件订阅函数是否接收粘性事件,默认为false,表示不接收
priority:声明事件订阅函数的事件接收优先级,默认为0
关于EventBus最简单的使用就先介绍到这里,下一章将会介绍一下EventBus的粘性事件的接受与发送,谢谢大家。