onNext not called for PublishSubject in android, rxjava?



我正在使用 rxjava 2 并尝试使用 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);

您只收到第一个,因为在发布(subject.onNext(object)(之后,您正在调用subject.onComplete()。只需删除该行即可。

最新更新