美文网首页
EventBus题记

EventBus题记

作者: loser先生 | 来源:发表于2017-06-26 09:57 被阅读0次

    简述

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

    相关文章

      网友评论

          本文标题:EventBus题记

          本文链接:https://www.haomeiwen.com/subject/scpdcxtx.html