美文网首页
EventBus的使用

EventBus的使用

作者: 下一个明天我的_d1d1 | 来源:发表于2017-11-08 14:11 被阅读0次

    近期使用EventBus碰到点问题顺便分享下,正常情况下使用eventbus进行通讯在需要发送消息的地方EventBus.getDefault().post(wht);直接进行发送,在接收消息的界面oncreate()方法中进行注册订阅

    EventBus.getDefault().register(this);

    在onDestroy();中解除注册

    EventBus.getDefault().unregister(this);然后创建一个方法来接收传递过来的数据

    //使用EventBus

    @Subscribe(threadMode = ThreadMode.MAIN)

    public voidonEvent(MtbMessage integer) {}这样就可以使用数据进行操作

    上面所述为普通的发送事件,但是这种只能是在事先订阅了才能收到消息

    还有另一种粘连事件,就是当消息发送后将消息保存了起来,当你注册订阅的时候就会收到事件

    发送时使用EventBus.getDefault().postSticky(snmessage);

    接收时

    @Subscribe(threadMode = ThreadMode.MAIN, sticky =true)

    public voidonEvent(MtbMessage integer) {}

    这样就可以接收到数据了,但是你会发现每次进入该页面时都会收到一条,这里就需要进行处理

    //清除黏连事件

    MtbMessage stickyEvent = EventBus.getDefault().getStickyEvent(MtbMessage.class);

    if(stickyEvent !=null) {

    EventBus.getDefault().removeStickyEvent(stickyEvent);

    }

    使用该方法进行清除,这样就ok了.

    相关文章

      网友评论

          本文标题:EventBus的使用

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