我正在使用rxjava 2并尝试使用rxbus传递值
rxbus代码
public class SeasonTabSelectorBus {
private static SeasonTabSelectorBus instance;
private PublishSubject<Object> subject = PublishSubject.create();
public static SeasonTabSelectorBus instanceOf() {
if (instance == null) {
instance = new SeasonTabSelectorBus();
}
return instance;
}
public void setTab(Object object) {
try {
subject.onNext(object);
subject.onComplete();
} catch (Exception e) {
e.printStackTrace();
}
}
public Observable<Object> getSelectedTab() {
return subject;
}
}
我将值设置为
SeasonTabSelectorBus.instanceOf().setTab(20);
这是我订阅的代码
SeasonTabSelectorBus.instanceOf().getSelectedTab().subscribe(new Observer<Object>(){
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(Object o) {
if (o instanceof Integer) {
int seasonSelected =(int) o;
Log.e("season selected",seasonSelected+"");
}
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
}
});
现在我在第一次调用时获得了值,但是当我再次使用不同的值调用时,我没有得到回调。
SeasonTabSelectorBus.instanceOf().setTab(40);
SeasonTabSelectorBus.instanceOf().setTab(90);
SeasonTabSelectorBus.instanceOf().setTab(120);
SeasonTabSelectorBus.instanceOf().setTab(290);
答案 0 :(得分:3)
您只收到第一个,因为在发布(subject.onNext(object)
)之后,您正在呼叫subject.onComplete()
。只需删除该行。