EventBus 使用 Sticky粘性传值事件

EventBus 使用基本步骤
依赖: implementation ‘org.greenrobot:eventbus:3.0.0’
1.注册与解除注册

   override fun onStart() {
        super.onStart()
        if(!EventBus.getDefault().isRegistered(true))
            EventBus.getDefault().register(this)
    }
    override fun onStop() {
        super.onStop()
        EventBus.getDefault().unregister(this)
    }

2.创建消息类

class EventMessBean{
    var type:String=""

    constructor(type: String) {
        this.type = type
    }
}

3.发送
EventBus.getDefault().post(EventMessBean(“1”))
EventBus.getDefault().postSticky(EventMessBean(“2”))//粘性传值
注意:
sticky事件一般用在我们不确认订阅关系是否存在,但是想提前发送广播时。
针对sticky事件 eventBus会缓存在事件发射队列,若是订阅关系已经存在则发射出去,但不会销毁。下次再次订阅,会继续接收上一次事件。
解决方法:
在接收到广播后执行销毁
EventBus.getDefault().removeStickyEvent(event);
4.接收
@Subscribe(threadMode = ThreadMode.MAIN)
fun refreshHomeEvent(event: EventMessBean) {

}
//粘性传值接收
@Subscribe(threadMode = ThreadMode.MAIN,sticky = true)
fun refreshHomeEvent(event: EventMessBean) {

}

你可能感兴趣的:(EventBus 使用 Sticky粘性传值事件)