Rxjava——使用RxBus替换EventBus

本文介绍了如何使用Rxjava的RxBus替代EventBus,详细阐述了RxBus的实现原理和使用方法,包括注册、发送数据、不同线程接收数据等功能。并讨论了RxBus存在的问题及优化的可能性。
摘要由CSDN通过智能技术生成

如果你的项目中用到了Rxjava,那么你就完全可以自己去写一个RxBus来替换EventBus,让项目的体积变小。

在网上看了很多人写的RxBus,总感觉有些缺陷或者不能完全替换EventBus的功能。所以,综合别人写的RxBus我自己实现了一个比较完整的RxBus。

首先说说EventBus的功能:
1,注册、反注册、发送数据
2,接收数据(根据类型接收)
3,不同线程接收数据(非ui→非ui、非ui→ui、ui→非ui)
4,观察者只关心发送数据,不关心有多少订阅者

那么我们使用Rxjava也需要来完成这几个功能才算真正的替换。

我们先定义一个RxBus类,并写成单例。

/**
 * rxbus的核心类
 */
public class RxBus {
   

    public static RxBus getDefault() {
        return RxBusInstance.rxBus;
    }
    //内部类
    private static class RxBusInstance {
   
        private static final RxBus rxBus = new RxBus();
    }
    // 主题,Subject是非线程安全的
    public final Subject bus;

    /**
     * 单例
     * PublishSubject只会把在订阅发生的时间点之后来自原始Observable的数据发射给观察者
     * 序列化主题
     * 将 Subject转换为一个 SerializedSubject ,类中把线程非安全的PublishSubject包装成线程安全的Subject
     */
    private 
  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值