1.引入依赖库:
implementation 'io.reactivex:rxjava:1.1.0'
implementation 'io.reactivex:rxandroid:1.1.0'
2,.创建RxBus操作类:
public class RxBus {
private static volatile RxBus instance;
private Subject<Object, Object> bus;
private RxBus() {
bus = new SerializedSubject<>(PublishSubject.create());
}
public static RxBus getDefault() {
if (instance == null) {
synchronized (RxBus.class) {
instance = new RxBus();
}
}
return instance;
}
public void post(Object object) {
bus.onNext(object);
}
public <T> Observable toObservable(Class<T> eventType) {
return bus.ofType(eventType);
}
}
3.在BaseActivity中保存和取消订阅事件。
public class BaseActivity extends AppCompatActivity {
protected ArrayList<Subscription> rxBusList = new ArrayList<>();
@Override
protected void onDestroy() {
super.onDestroy();
clearSubscription();
}
private void clearSubscription() {
for (Subscription subscription : rxBusList) {
if (subscription != null && subscription.isUnsubscribed()) {
subscription.unsubscribe();
}
}
}
}
4.创建发送的对象实体类:
public class EventBean {
private int userId;
private String nickName;
public EventBean(int userId, String nickName) {
this.userId = userId;
this.nickName = nickName;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
public String getNickName() {
return nickName;
}
public void setNickName(String nickName) {
this.nickName = nickName;
}
}
5.发送数据
public void sendEvent(View view) {
RxBus.getDefault().post(new EventBean(121, "靠近你只是想睡你"));
}
6.接收数据
private void recieveEvent() {
Subscription subscription = RxBus.getDefault().toObservable(EventBean.class).subscribe(new Action1<EventBean>() {
@Override
public void call(EventBean eventBean) {
tvContent.setText(eventBean.getUserId() + "------" + eventBean.getNickName());
}
});
rxBusList.add(subscription);
}