超好用的RxBus库

RxBus工具类

具体请参考Github.

1、该项目基于RxJava2 & RxAndroid

2、通过@RxBusSubscribe注解方法来接收消息,其中可以设置标签组、线程(默认接收消息在主线程)、Sticky标记。

3、可以发送普通消息和Sticky消息。

4、自动防重复注册宿主(这里指任何一个类)、自动防重复注册标签(及同一个宿主下的标签不重复,如果重复了,只有第一次有效。)。

5、支持背压,采用的策略是BackpressureStrategy.DROP。

使用方法:

1、引用

在Project的gradle中加入:

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

在Module的gradle中加入:

    dependencies {
        compile 'com.github.like5188:RxBus:2.0.1'
        annotationProcessor 'com.github.like5188.RxBus:rxbus-compiler:2.0.1' // java
        // kapt 'com.github.like5188.RxBus:rxbus-compiler:2.0.1' // kotlin
    }

2、在需要接收消息的类的初始化方法(通常为构造函数)中调用register(this)方法进行注册宿主(通常在Activity的onCreate()方法中调用,也可以是其它任何类)。当在父类调用register(this)方法后,在子类无需再调用了,调用了也行,会自动防重复注册宿主。

    RxBus.register(this);

3、在销毁宿主的实例时调用unregister(this)方法进行取消注册宿主(通常在Activity的onDestroy()方法中调用)。

    RxBus.unregister(this);

4、发送普通消息可以使用post()、postByTag()方法。

    RxBus.post();
    RxBus.post(object);
    RxBus.post("tag", object);
    RxBus.postByTag("tag");

5、发送Sticky消息使用postSticky()方法,注意Sticky消息在第一次接收后,就和普通消息一样了。和发送普通消息相比,实际上就是延迟了第一次接收消息的时间(用来替代Intent传递数据)。

    RxBus.postSticky(object);
    RxBus.postSticky("tag", object);

6、接收消息和发送消息是一一对应的。使用@RxBusSubscribe注解一个方法,被注解的方法的参数最多只能是1个。只能被public修饰,且不能被static修饰(即只能使用public void修饰)。其中可以设置标签组、线程(RxBusThread)、Sticky标记。

    默认标签,无参

    发送消息:
    RxBus.post();

    接收消息:
    @RxBusSubscribe()
    public void test() {
    }

    // kotlin版本
    @RxBusSubscribe()
    fun test() {
    }
    默认标签,有参

    发送消息:
    RxBus.post(123);

    接收消息:
    @RxBusSubscribe()
    public void test(int data) {
    }
    自定义标签,无参

    发送消息:
    RxBus.postByTag("tag");

    接收消息:
    @RxBusSubscribe("tag")
    public void test() {
    }
    自定义标签,有参

    发送消息:
    RxBus.post("tag", 123);

    接收消息:
    @RxBusSubscribe("tag")
    public void test(int data) {
    }
    自定义标签数组,有参

    发送消息:
    RxBus.post("tag1", "1");
    RxBus.post("tag2", "2");

    接收消息:
    @RxBusSubscribe(value = {"tag1", "tag2"})
    public void test(String data) {
    }
    自定义标签,有参

    发送Sticky消息:
    RxBus.postSticky("tag", "1");

    接收Sticky消息:
    @RxBusSubscribe(value = "tag", isSticky = true, thread = RxBusThread.IO)
    public void test(String data) {
    }
    默认标签,有参

    发送Sticky消息:
    RxBus.postSticky("1");

    接收Sticky消息:
    @RxBusSubscribe(isSticky = true)
    public void test(String data) {
    }
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值