【发布时间】:2018-04-12 17:23:02
【问题描述】:
我是 RxJava 的新手,并尝试在 Android 中构建模型视图意图模式。在我的视图(活动)中,我创建了一个 PublishProcessor,如下所示:
private PublishProcessor<MviResultIntent> mPublishProcessor;
mPublishProcessor = PublishProcessor.create();
创建后,我将使用处理器作为参数调用演示者的方法:
mResultPresenter.bindIntents(mPublishProcessor);
被调用方法内部发生了什么:
Disposable processIntents = mPublishProcessor
.subscribeOn(AndroidSchedulers.mainThread())
.subscribeWith(new DisposableSubscriber<MviResultIntent>() {
@Override
public void onNext(MviResultIntent mviResultIntent) {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onComplete() {
//may be ignored
}
});
mCompositeDisposable.add(processIntents);
然后在我的 View Class 中调用:
mPublishProcessor.onNext(new MviResultIntent.ProductsIntent());
我的 Presenter 中的 PublishProcessor 没有得到我试图触发的 onNext 事件。我错过了什么吗?我也没有收到 onComplete 或 onError 。
感谢任何帮助!如果您需要任何进一步的信息,请随时询问。提前感谢您的帮助!
【问题讨论】:
-
在
onNext之前检查mPublishProcessor.hasSubscribers()以确认确实有订阅者在收听时间。 -
正如你所料,当我调用 onNext 时没有订阅者,但到目前为止我还没有解决方案。
-
你必须在事件触发之前调用
subscribeWith。 -
是的,这就是我正在做的事情,或者至少我相信我会做。我在 onCreate 中调用 PublishProcessor 和 bindIntents 方法的创建,在 onResume 中调用 onNext。
-
我有另一个类似的结构,它实际上可以工作。但是 hasSubscribers 也在那里返回 false 。如果这可能是一个提示,我在 2.1.10 版上