rxjava的核心观念就是订阅者和观察者,其实就是数据接受者和发送者。我一开始在理解上就吃了亏。
数据发送者(observable):用于发送数据
数据接受者(observer):用于接收来自于observable以及subject的数据
subject:可用于发送数据,也可用于接收数据,即既是发送者又是接受者
subscriber:接收源,与observable的区别在于可以取消订阅即unsbscriber,建议使用subscriber
话不多说,上代码:
//先来看发送者的代码
observable = Observable.create(new ObservableOnSubscribe() {
@Override
public void subscribe(@NonNull ObservableEmitter e) throws Exception {
for (int i=0;i<10;i++){
//onNext用于发送数据
e.onNext("数据"+i);
}
//onComplete用于告诉接受者数据已经发送完成
e.onComplete();
}
});
接收者:
@Override
public void onSubscribe(@NonNull Disposable d) {
public void onNext(@NonNull Object o) {
tv_receive.append(String.valueOf(o)+"\n");
}
public void onError(@NonNull Throwable e) {
public void onComplete() {
tv_receive.append("数据接收完毕");
}
};
最后重要的一步:
//用于将发送者与接收者关联起来
observable.subscribe(observer);