当前位置:首页 > 芯闻号 > 充电吧
[导读]最近在学习Rxjava相关的知识,发现我们完全可以用Rxjava里面的知识来代替以前项目中使用的EventBus.在介绍实现前,先说说几点可能会有疑惑的问题:首先,明确一下RxBus的概念      

最近在学习Rxjava相关的知识,发现我们完全可以用Rxjava里面的知识来代替以前项目中使用的EventBus.


在介绍实现前,先说说几点可能会有疑惑的问题:

首先,明确一下RxBus的概念

      RxBus 名字看起来像一个库,但它并不是一个库,而是一种模式,它的思想是使用 RxJava 来实现了 EventBus ,而让你不再需要使用OTTO或者 GreenRobot 的EventBus。

其次,为什么要使用RxBus来代替EventBus

     我之所以想用RxBus来代替EventBus,一是为了自己更加熟悉Rxjava的相关用法,二是为了减少程序引用的第三方库(既然都用了Rxjava 没必要再去引入EventBus)。

当然,如果对Rxjava没有一点了解,或者说只是想简单的使用EventBus的功能,建议还是使用Otto或者GreenRobot的EventBus,这二者都可以通过注解非常简单的使用。

下面是正文:


public class RxBus {
private static RxBus instance;
private Vector

Rxbus代码如上,使用方式和EventBus一样,在合适的地方(比如oncreate 或者 onResume)注册,和取消注册(如onPause和onDestroy),在初始化同时,我们可以指定接收后所运行的线程等其他操作


Observableobservable = RxBus.getInstance().register(this);
observable.observeOn(AndroidSchedulers.mainThread()).subscribe(new Action1() {
    @Override
    public void call(UserBean userBean) {
        Log.d("Test", "received :" + userBean.toString());
    }
});
RxBus.getInstance().unregister(this);
发送事件的方式:

RxBus.getInstance().post(new UserBean("rxbus", 99));


当然我们还可以在这个的基础上加上注解的方式 来让实现更方便,这个就留着后面再处理了!
本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除( 邮箱:macysun@21ic.com )。
换一批
延伸阅读
关闭