Otto EventBus实践

Otto EventBus实践

Otto 框架是由 Square 公司开发的,一款用于android 事件总线 EventBus,我们可以通过他来传递事件,具体使用请参考官网,这里我主要通过一个简单的例子来介绍我们在该如何使用这一框架

实践

在gradle加入依赖

compile 'com.squareup:otto:1.3.8'

其实总线这东西,和我们以前学Arm什么都是一样的,都是为了实现事件的分发,按照我们的思路,首先 我们要先生成一个总线

private static final Bus BUS = new Bus();

总线有了,我们需要把设备(Activity/Service等)绑定到总线上

mBus.register(this);

当然,用完我们需要解绑,这个可以在onDestroy中实现

mBus.unregister(this);

事件分发用

post(Object event)

接收事件,使用注解

@Subscribe

其实 这个就是一个订阅模式,因为这些都是套路,所有我封装了一个 EventBusBaseActivity,对绑定和解绑做了初始化

public class EventBusBaseActivity extends AppCompatActivity {

    private final Bus mBus = BusProvider.getInstance();

    protected Bus getBus() {
        return mBus;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mBus.register(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        mBus.unregister(this);
    }
}

Bus这里使用了单例

public final class BusProvider {
    private static final Bus BUS = new Bus();

    public static Bus getInstance() {
        return BUS;
    }

    private BusProvider() {
        // No instances.
    }
}

对了 ,还差一个最重要的,那么,如何把获知这个事件就是我需要的呢?其实很简单,主要有两点:
1.事件分发者和事件订阅者 绑定在同一个总线
2.分发的事件类型和指定的分发类型一致
第一点很好理解,要接收必须在同一个频段,不在同一个频段,咱两没啥好说的,说了也白说~
第二点比较有趣,在满足第一点的条件下,只要你和分发事件类型一样,就能接收,说明,事件分发后,所有满足条件的接收方都会受到信息,非常有趣

EventBus的原理就不深入了,其实总线也可以用我们最近学习的Rxjava来实现,我们下一篇文章将做详细介绍。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值