添加依赖:
//引入rxJava
compile 'io.reactivex.rxjava2:rxjava:2.1.8'
//引入rxAndroid
compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
//引入rxJava适配器,方便rxJava与retrofit的结合
compile 'com.jakewharton.retrofit:retrofit2-rxjava2-adapter:1.0.0'
//引入J神的rxrelay2,出现异常仍然可以处理
compile 'com.jakewharton.rxrelay2:rxrelay:2.0.0'
创建RxBus 类:
public class RxBus {
private static volatile RxBus instance;
private final Relay<Object> mBus;
public RxBus() {
this.mBus = PublishRelay.create().toSerialized();
}
public static RxBus getInstance() {
if (instance == null) {
synchronized (RxBus.class) {
if (instance == null) {
instance = Holder.BUS;
}
}
}
return instance;
}
public void post(Object obj) {
mBus.accept(obj);
}
public <T> Observable<T> toObservable(Class<T> tClass) {
return mBus.ofType(tClass);
}
public Observable<Object> toObservable() {
return mBus;
}
public boolean hasObservers() {
return mBus.hasObservers();
}
private static class Holder {
private static final RxBus BUS = new RxBus();
}
}
创建 EventMsg 类,这个可以自定义:
public class EventMsg {
private String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
发送通知:
EventMsg eventMsg = new EventMsg();
eventMsg.setMsg("发送通知");
RxBus.getInstance().post(eventMsg);
接收通知:
RxBus.getInstance().toObservable().map(new Function<Object, EventMsg>() {
@Override
public EventMsg apply(Object o) throws Exception {
return (EventMsg) o;
}
}).subscribe(new Consumer<EventMsg>() {
@Override
public void accept(EventMsg eventMsg) throws Exception {
if (eventMsg != null) {
//处理接收通知后逻辑
}
}
});