EventBus 3.0变化

自古英雄不问出处,奈何我却不是英雄!

转载请标明出处:http://blog.csdn.net/u011275767/article/details/51207811 本文出自:【程序员先生的博客】

先说一下为什么要写这个文章,网上也有讲解EventBus用法的,其实也很简单,而且也讲的也很透彻的,但是,但是,EventBus除了3.0!有了点变化。我在这里呢主要是讲一下3.0.与2.X的区别。

注册订阅者

//2.x版本的注册
EventBus.getDefault().register(this); // 注册普通事件
EventBus.getDefault().register(this, 100); // 注册带有优先级的普通事件
EventBus.getDefault().registerSticky(this); // 注册粘性事件
EventBus.getDefault().registerSticky(this, 100); // 注册带有优先级的粘性事件

//3.0版本的注册
EventBus.getDefault().register(this);
能够看到还是简化了很多,那么2.x之前的四种注册方式是都没有了么,那怎么区分呢,我们下面会在响应事件部分讲到。

发送事件
EventBus.getDefault().post("XXXX");
EventBus.getDefault().postSticky("XXXX");
发送事件没有变化都是通过post postStrcky来发送

响应事件
//2.x版本
public void onEvent(String str) {
}
public void onEventMainThread(String str) {
}
public void onEventBackgroundThread(String str) {
}

//3.0版本
@Subscribe(threadMode = ThreadMode.BACKGROUND, sticky = true, priority = 1)
public void test(String str) {
}
2.X版本是通过以onEvent开头的方法来接受事件,通过onEventMainThread和onEventBackgroundThread来区分响应事件的线程。3.0版本不需要以onEvent方法开头,而是通过@Subscribe注解的方式,@Subscribe后面的括号中的参数就是我们在注册事件中说到的粘性事件,优先级事件问题。 通过thredMode 来确定运行的线程

public enum ThreadMode {
    /**
     * 当前发布线程
     */
    POSTING,
    /**
     * 主线程
     */
    MAIN,
    /**
     * 后台线程
     */
    BACKGROUND,
    /**
     * 异步线程(独立于发布线程和主线程)
     */
    ASYNC
}
解除注册
EventBus.getDefault().unregister(this);
解除注册的方式两个版本也相同。

至此3.0版本与以前版本的却别就说完了。希望对大家有用!






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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值