java发布订阅框架_EventBus事件总线框架(发布者/订阅者模式,观察者模式)

一、 android应用内消息传递的方式:

1. handler方式-----------------不同线程间传递消息。

2. Interface接口回调方式-------任意两个对象。

3. Intent进行组件间通信,广播方式。

二、单例比较好的写法:

private static volatile EventBus defaultInstance;

构造函数应当是private,不应该是public

1 public staticEventBus getDefault() {2   if (defaultInstance == null) {3     synchronized (EventBus.class) {4       if (defaultInstance == null) {5         defaultInstance = newEventBus();6       }7     }8   }9   returndefaultInstance;10 }

双重检查锁(DCL)的方式,防止并发的问题,还能极大的提高效率。

三、EventBus3.0以前

1. 采用发布者/订阅者模式(观察者模式)设计的简化Activity、Fragment、Service、threads等之间通信的一种事件框架机制,

让代码简洁,耦合性更低。

2. 主要核心内容:注册(事件订阅)方法、事件发布方法、反注册(取消订阅)方法。

3. EventBus通过DCL单例获取一个实例 EventBus.getDefault();

EventBus一共提供了4种线程模型ThreadModel,分别是PostThread, MainThread, BackgroundThread, Async。

PostThread --------------默认实现,执行发生在发布事件的同一个线程;

MainThread --------------执行在UI主线程上;

BackgroundThread、Async---两个都是通过Executors.newCachedThreadPool()线程池来执行的。

Event事件,任意类型对象;

subsciber 事件订阅者,

publisher 事件发布者,EnentBus.post(Object)

EnventBus.getDefault()

EnventBus.getDefault().register()

EnventBus.getDefault().unregister()

EnventBus.getDefault().post(Object)

四、 EventBus3.0版本引入了注解来订阅处理函数

可以通过运行时注解+反射来获取订阅回调函数

也可以通过编译时@Subscribe注解生成class文件,编译时生成MyEventBusIndex类,该类中包含了List内容。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值