RxJava编程:事件总线RxBus

RxJava编程:事件总线RxBus


本文博客链接:http://blog.csdn.net/jdh99,作者:jdh,转载请注明.


环境:

主机:WIN10

开发环境:Android Studio 2.2 Preview 3

RxJava版本:2.0.1

RxAndroid版本:2.0.1


说明:

用RxJava实现事件总线,以下为demo。


源码:

RxBus.Java

package com.bazhangkeji.classroom.common;

import io.reactivex.Observable;
import io.reactivex.subjects.PublishSubject;

public class RxBus {
    private final PublishSubject<Object> _bus = PublishSubject.create();

    private RxBus() {
    }

    private static class RxBusHolder{
        private static  final  RxBus INSTANCE = new RxBus();
    }

    public static RxBus getInstance(){
        return RxBusHolder.INSTANCE;
    }

    public void send(Object o) {
        _bus.onNext(o);
    }

    public Observable<Object> toObserverable(){
        return _bus;
    }

    public boolean hasObservers(){
        return  _bus.hasObservers();
    }
    
    public <T> Observable<T> toObserverable(Class<T> eventType) {
        return _bus.ofType(eventType);
    }
}

测试代码:

Disposable disposable = RxBus.getInstance()
                .toObserverable(String.class)
                .subscribe(new Consumer<String>() {
                    @Override
                    public void accept(String s) throws Exception {
                        Log.i(TAG, s);
                    }
                });

        RxBus.getInstance().send("hello");

        disposable.dispose();

        RxBus.getInstance().send("jdh");
        RxBus.getInstance().send(100);


打印结果: hello

jdh和100都并没有打印,因为订阅已经被取消。如果不取消,jdh可以打印,100不能打印,因为类型不匹配。


参考链接:

1.RxJava2-Android-Samples/app/src/main/java/com/rxjava2/android/samples/ui/rxbus/RxBus.java

2.RxJava RxBus基础

3.RxBus


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值