超好用的RxBus库
来源:互联网 发布:内裤品牌 知乎 编辑:程序博客网 时间:2024/05/18 03:54
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) { }
- 超好用的RxBus库
- RxJava+RxBus的使用
- RXBus的翻译
- RXBUS的简单使用
- RxBus的使用示例
- RxBus的小试牛刀
- Android Rxbus的使用
- 基于RxJava的RxBus
- rxbus的实现
- Rxbus的简单使用
- Android RxBus的使用
- 基于Rxrelay的RxBus
- RxBus
- RxBus
- RXBUS
- RxBus
- RxBus
- RxBus
- SAP关于生产订单的批量删除功能
- 连接方式
- 关于jquery.lazyload.min.js+ajax实现分页图片预加载,如何只刷新新添加的内容
- PB 字符串转 UTF-8
- dm8148 videoM3 link源码解析
- 超好用的RxBus库
- 人脸关键点检测
- 条件·复数四则运算
- C++虚函数、纯虚函数区别
- 遍历map的几种方法
- git学习
- ((硬件spi+dma)+模拟spi)驱动LCD5110
- Js控制鼠标滑动图片
- js制作简单的tab菜单切换