rxjava_for_android
rxjava_for_android copied to clipboard
关于Subscriber
Observable每次subscribe都要新new一个Subscriber吗,一个Subscriber对象是否可以重复使用
可以的,我们可以模拟两个按钮对映两个被订阅者,并在点击时分别为同一个订阅者发出数据,那么这个订阅者就有责任去区分数据来自于何方,并分别处理,大致代码如下:
//被订阅者1 @OnClick(R.id.btn1) void btn1() { Observable.just(1) .compose(this.<Integer>bindToLifecycle()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(mReuseSubscriber); }
//被订阅者2 @OnClick(R.id.btn2) void btn2() { Observable.just("string") .compose(this.<String>bindToLifecycle()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(mReuseSubscriber); }
` //订阅者 mReuseSubscriber = new Observer<Object>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(Object data) {
if (data.getClass() == Integer.class) {
Toast.makeText(getActivity(), "The data from Btn1!", Toast.LENGTH_SHORT).show();
} else if (data.getClass() == String.class) {
Toast.makeText(getActivity(), "The data from Btn2!", Toast.LENGTH_SHORT).show();
}
}
};
`
btn1重复点击多次,mReuseSubscriber 每次都可以响应吗???我是结合Retrofit使用的。subscriber是一个成员变量,我第一次请求可以处理,但是再次请求时subscriber就不响应了,不知道是不是Retrofit的问题。
根据你所说的猜想应该是Retrofit问题,你可以阅读这篇文章: Retrofit 2.0,在**Call (10:30)**这部分或许会对你有所帮助