EventBus点单使用

岁月磨没了身上的荆棘,是失败者多好的理由.

葵花三式

  • 注册
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类型的
源码思密达

EventBus虽好可不要贪杯哦

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

推荐阅读更多精彩内容

  • 一、简介 EventBus是由greenrobot 组织贡献的一个Android事件发布/订阅轻量级框架。Even...
    Mr丶sorrow阅读 15,057评论 0 13
  • 本文的EventBus,是指greenrobot的 EventBus, 主要以EventBus3.0 讲解; 什么...
    Simon_z阅读 10,554评论 2 2
  • EventBus源码分析(一) EventBus官方介绍为一个为Android系统优化的事件订阅总线,它不仅可以很...
    蕉下孤客阅读 9,429评论 4 42
  • 先吐槽一下博客园的MarkDown编辑器,推出的时候还很高兴博客园支持MarkDown了,试用了下发现支持不完善就...
    Ten_Minutes阅读 3,638评论 0 2
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,324评论 19 139