Newer
Older
Telegram / TMessagesProj / src / main / java / org / telegram / group / RxBus.java
黄旋科 on 8 Dec 2017 924 bytes 优化 新增退出群聊信息
package org.telegram.group;

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

/**
 */
public final class RxBus {

    private final Subject<Object> _bus;


    private static class RxHolder{
        private static volatile RxBus sRxBus = new RxBus();
    }

    private RxBus() {
        _bus = PublishSubject.create().toSerialized();
    }
    public static RxBus getInstance(){
        return RxHolder.sRxBus;
    }
    public void send(Object o){
        if (hasObserve()) {
            _bus.onNext(o);
        }
    }

    private boolean hasObserve() {
        return _bus.hasObservers();
    }
    public Observable<Object> toObservable(){
        return _bus;
    }
    // 根据传入的事件类型,返回特定类型的eventType的被观察者
    public <T> Observable<T> toObservable(Class<T> event){
        return _bus.ofType(event);

    }

}