EventBus的使用

2017-11-08  本文已影响0人  下一个明天我的_d1d1

近期使用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了.

上一篇下一篇

猜你喜欢

热点阅读