效果图如下:
引入需要的Jar包
//compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
compile 'io.reactivex.rxjava2:rxjava:2.1.7'
- 定制RxBus
package tsou.cn.rxbus;
import io.reactivex.Observable;
import io.reactivex.subjects.PublishSubject;
import io.reactivex.subjects.Subject;
/**
* Created by Administrator on 2018/1/4 0004.
*/
public class RxBus {
private final Subject<Object> bus;
private static RxBus rxBus;
private RxBus() {
bus = PublishSubject.create().toSerialized();
}
public static RxBus getInstance() {
if (null == rxBus) {
synchronized (RxBus.class) {
if (null == rxBus) {
rxBus = new RxBus();
}
}
}
return rxBus;
}
public void post(Object o) {
bus.onNext(o);
}
public boolean hasObservable() {
return bus.hasObservers();
}
/**
* 转换为特定类型的Obserbale
*/
public <T> Observable<T> tObservable(Class<T> type) {
return bus.ofType(type);
}
}
- 注册RxBus并接收数据
private void initRxBus() {
compositeDisposable = new CompositeDisposable();
RxBus.getInstance().tObservable(RxActivityBean.class)
.subscribe(new Observer<RxActivityBean>() {
@Override
public void onSubscribe(@NonNull Disposable d) {
compositeDisposable.add(d);
}
@Override
public void onNext(@NonNull RxActivityBean rxActivityBean) {
mText.setText(rxActivityBean.getInfo());
}
@Override
public void onError(@NonNull Throwable e) {
mText.setText(e.getMessage());
}
@Override
public void onComplete() {
}
});
}
- 清除所有消息
@Override
protected void onDestroy() {
super.onDestroy();
if (null != compositeDisposable && !compositeDisposable.isDisposed()) {
compositeDisposable.clear();
}
}
- 发送消息
RxBus.getInstance().post(new RxActivityBean("我是使用RxBus向Activity发送的数据"));
RxBus消息传递完成!