EventBus点单使用

2017-08-03  本文已影响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发送事件, 那么可以不需要先注册, 也能接受到事件.

//你可以在没有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: 优先级如果有多个对象同时订阅了相同的事件, 那么优先级越高,会优先被调用.     
可以自任意java中
EventBus.getDefault().register(this);//其中this是object类型的
源码思密达

EventBus虽好可不要贪杯哦

上一篇下一篇

猜你喜欢

热点阅读