美文网首页
EventBus点单使用

EventBus点单使用

作者: 会理发的店小二 | 来源:发表于2017-08-03 11:01 被阅读0次

    岁月磨没了身上的荆棘,是失败者多好的理由.

    葵花三式

    • 注册
    EventBus.getDefault().register(this); 
    
    • 响应
    @Subscribe(threadMode = ThreadMode.BackgroundThread) ///一个在后台线程执行的方法,用于接收事件
    public void onUseEvent(MsgEvent event) {//参数必须是MsgEvent类型, 否则不会调用此方法
    }
    
    • 解绑
    //解除绑定
    EventBus.getDefault().unregister(this);
    
    • 发送消息
    //任意地方调用
    EventBus.getDefault().post(new MsgEvent())
    

    微操作

    之前说的使用方法, 都是需要先注册(register), 再post,才能接受到事件;
    如果你使用postSticky发送事件, 那么可以不需要先注册, 也能接受到事件.

    • Sticky事件的使用
    //你可以在没有register的情况下:发送Sticky类型消息
    EventBus.getDefault().postSticky(new MsgEvent("Use Sticky"));
    //注册之后,马上就能收到刚刚postSticky发送的事件
    EventBus.getDefault().register(this);
    //事件响应,注意sticky = true
    @Subscribe(threadMode = ThreadMode.MainThread, sticky = true)
    public void onEvent(MsgEvent event){
    }
    
    • 参数说明
    @Subscribe :注解标签,表示一个订阅
    threadMode : 1.ThreadMode.MainThread在UI线程执行
                 2. ThreadMode.BackgroundThread 后台线程
                 3.ThreadMode.Async强制在后台执行
                 4.ThreadMode.PostThread 在发送消息所在线程
    sticky: 表示是否是一个粘性事件 如果你使用postSticky发送一个事件,那么需要设置为true才能接受到事件
    priority: 优先级如果有多个对象同时订阅了相同的事件, 那么优先级越高,会优先被调用.     
    
    • 不只局限在Activity与Fragment中使用
    可以自任意java中
    EventBus.getDefault().register(this);//其中this是object类型的
    
    源码思密达

    EventBus虽好可不要贪杯哦

    相关文章

      网友评论

          本文标题:EventBus点单使用

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