RxJava PublishProcessor不接收onNext

时间:2018-04-12 17:23:03

标签: android rx-java rx-java2

我是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。

任何帮助表示赞赏!如果您需要任何进一步的信息,请随时询问。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我发现我无法在主线程上的非Android类中订阅。当我改变

.subscribeOn(AndroidSchedulers.mainThread())

.subscribeOn(Schedulers.io())

它有效。