EventBus题记

2017-06-26  本文已影响0人  loser先生

简述

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可以配置,几个方法可以通用一个参数,可以设置接收的优先级,谁的优先级的数值越大,谁的优先级就越高,就优先收到消息。

上一篇下一篇

猜你喜欢

热点阅读