封装RxBus
public class RxBus {
private static volatile RxBus rxBus;
private final Subject<Object,Object> subject = new SerializedSubject<>(
PublishSubject.create()
);
private RxBus(){}
public static RxBus getInstance(){
if (rxBus==null){
synchronized (RxBus.class){
if (rxBus == null){
rxBus = new RxBus();
}
}
}
return rxBus;
}
/**
* 发送事件
* @param object
*/
public void post(Object object){
subject.onNext(object);
}
/**
* 接收指定类型的事件
* @param eventType
* @param <T>
* @return
*/
public <T> Observable<T> toObservable(Class<T> eventType){
return subject.ofType(eventType);
}
}
客户端
// 发送事件
RxBus.getInstance().post(new MessageEvent("xxx"));
// 接收事件
Subscription subscription = RxBus.getInstance().toObservable(MessageEvent.class)
.subscribe(new Action1<MessageEvent>() {
@Override
public void call(MessageEvent messageEvent) {
System.out.println("call:" + messageEvent.getMessage());
}
});
// 取消订阅事件
if (subscription!=null&&subscription.isUnsubscribed()){
subscription.unsubscribe();
}