简述
EventBus是一款针对Android优化的发布/订阅事件总线。主要功能是替代Intent,Handler,BroadCast在Fragment,Activity,Service,线程之间传递消息.优点是开销小,代码更优雅,以及将发送者和接收者解耦。
告知观察者事件发生时通过EventBus.post函数实现,这个过程叫做事件的发布,观察者被告知事件发生叫做事件的接收,是通过下面的订阅函数实现的。
EventBus的源码下载
https://github.com/greenrobot/EventBus
EventBus新版本3.0的使用
1、关联
在app的build.gradle中添加EventBus的依赖库:
compile 'org.greenrobot:eventbus:3.0.0'
2、注册
EventBus.getDefault().register(this);//在AudioPlayerActivity的onCreate方法中注册EventBus
3、订阅方法(在这里接收消息并做相应处理)
//注意:订阅方法不能为私有的(private)
@Subscribe(threadMode = ThreadMode.MAIN,sticky = false,priority = 0)
public void showData(MediaItem mediaItem) {//传入一个方法作为标识
showViewData();//显示数据
checkPlaymode();//校验播放模式
}
4、取消注册
EventBus.getDefault().unregister(this);//在onDestroy中取消注册
5、发消息
EventBus.getDefault().post(mediaItem);//在MusicPlayerService的onPrepared方法中,利用EventBus发送消息
使用方法参考博客:http://blog.csdn.net/harvic880925/article/details/40660137
新版3.0与老版本的区别
1、我们可以自定义订阅方法名,即订阅方法名不再强制要求以OnEvent开头,可以自己定义。
2、订阅方法的线程模式ThreadMode可以配置,几个方法可以通用一个参数,可以设置接收的优先级,谁的优先级的数值越大,谁的优先级就越高,就优先收到消息。