EventBus的使用

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容