岁月磨没了身上的荆棘,是失败者多好的理由.
葵花三式
- 注册
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发送事件, 那么可以不需要先注册, 也能接受到事件.
- Sticky事件的使用
//你可以在没有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: 优先级如果有多个对象同时订阅了相同的事件, 那么优先级越高,会优先被调用.
- 不只局限在Activity与Fragment中使用
可以自任意java中
EventBus.getDefault().register(this);//其中this是object类型的
源码思密达
网友评论