android,rxjava中的PublishSubject没有调用onNext?
Posted
技术标签:
【中文标题】android,rxjava中的PublishSubject没有调用onNext?【英文标题】:onNext not called for PublishSubject in android, rxjava? 【发布时间】:2018-05-07 08:47:43 【问题描述】:我正在使用 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);
【问题讨论】:
【参考方案1】:您只收到第一个,因为在发布 (subject.onNext(object)
) 之后,您正在调用 subject.onComplete()
。只需删除该行。
【讨论】:
非常感谢,就是这样。 很高兴为您提供帮助以上是关于android,rxjava中的PublishSubject没有调用onNext?的主要内容,如果未能解决你的问题,请参考以下文章
android,rxjava中的PublishSubject没有调用onNext?
何时在 Android 中使用 RxJava,何时使用 Android 架构组件中的 LiveData?
RxJava 作为 Android 项目中的事件总线 - 从总线中删除事件