rxbus 源码_RxBus 开源,基于 RxJava 的 event bus

介绍

RxBus 是一个发布/订阅模式的事件总线,用法和 EventBus 一样简单。RxBus 基于 RxJava 开发,除了拥有和 EventBus

一样简单的事件总线机制之外,还拥有 RxJava 的丰富特性。

图片发自简书App

如何使用

定义 EventData:

public static class EventData { /* Additional fields if needed */ }

注解定义订阅者的回调方法,回调方法回在 UI 线程中执行:

@RegisterBus

public void onMessageEvent(MessageEvent event) {/* Do something */};

注册/解注册。 观察者需要被注册到 RxBus,其 @RegisterBus 标记的方法才会被扫描到,在不需要的地方记得解注册。

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

// register to RxBus

RxBus.getInstance().register(this);

}

@Override

protected void onDestroy() {

super.onDestroy();

// unregister from RxBus

RxBus.getInstance().unRegister(this);

}

发送数据:

// send data in thread

Data data = new Data();

Data.setContent("hello world");

RxBus.getInstance().send(data);

比 EventBus 多的优点

RxBus 提供 chainProcess 方法来包装一个处理过程, 处理结果会自动发送到观察者。

图片发自简书App

在 MVP 架构的 M 层你可以这样用

RxBus.getInstance().chainProcess(new Func1() {

@Override

public Object call(Object o) {

// do something in IO thread, the return data can be subscribe and receive.

// getUser() is a IO/net process

User user = getUser();

user.setId(uid);

user.setName("大利猫");

return user;

}

});

然后在 P 层接收:

/**

* @RegisterBus mark this method to receive data in UI thread

* @param user

*/

@RegisterBus

public void onUser(User user) {

userView.showUser(user);

}

Gradle independence

Step 1. Add the JitPack repository to your build file, Add it in your root build.gradle at the end of repositories:

allprojects {

repositories {

...

maven { url 'https://jitpack.io' }

}

}

Step 2. Add the dependency

dependencies {

compile 'com.github.liuguangli:RxBus:1.1'

}

源码地址

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值