不理解RxJava MaybeObserver(聊天通知不起作用)

不理解RxJava MaybeObserver(聊天通知不起作用),java,android,rx-java,Java,Android,Rx Java,我对Java、android和Rxjava非常陌生。我最近注意到,在一个现有的项目(不是我写的)中,应该收到的聊天通知没有收到。于是我开始做一些追踪。下面是代码的一部分 注意:确实收到的通知似乎总是转到文件FCMServices 我在下面的代码中几乎到处都放了断点。我注意到的是,我没有收到成功时发出的通知,onSuccess和onError没有被调用,但是onComplete会被调用。然而,我发现这很奇怪,因为我认为在onComplete之前必须调用onSuccess或onError 我对这些功

我对Java、android和Rxjava非常陌生。我最近注意到,在一个现有的项目(不是我写的)中,应该收到的聊天通知没有收到。于是我开始做一些追踪。下面是代码的一部分

注意:确实收到的通知似乎总是转到文件
FCMServices

我在下面的代码中几乎到处都放了断点。我注意到的是,我没有收到成功时发出的通知,
onSuccess
onError
没有被调用,但是
onComplete
会被调用。然而,我发现这很奇怪,因为我认为在
onComplete
之前必须调用
onSuccess
onError

我对这些功能的理解是基于

maybeveplatmapbiselector
类中,
onSuccess
依次调用了该函数。(我相信也是一个reactivex.io类)

这原来是来自
MaybeObserver
界面


我的问题是
TestObserver
maybelapmabiselector
onSuccess
到底在做什么?如果基于我提供的信息,甚至是可能的话,为什么有些通知会转到
onComplete
,而没有转到
onSuccess
onError
中的
FCMServices.java

您是否尝试过注释
currentChatDisposable.dispose()?不久前,我也遇到过同样的问题,我过早地处理了我的一次性用品,并且没有显示任何数据

通常在生命周期的
onPause()
onDestroy()
时调用
.dispose()


PS:如果您不知道,RxJava中的
可能会返回一个值,完全不返回,或者返回一个异常。

谢谢您的回答。我尝试了你的建议,但仍然没有聊天通知。创建通知的唯一点是在
onSuccess
中。由于断点从未停止在那里,我认为这是一个问题。只是不知道为什么有时会这样,而在其他情况下则不会。谢谢你对
的解释,也许
,多年来一直在做这方面的研究。你查过改装电话的答案了吗?是200吗?您期望的对象是否已成功解析?Rxjava可能会做出这样的反应,因为您的API调用中出现了错误。您可能需要添加okhttp日志拦截器,以查看发送的内容和接收的内容。正如您链接状态的MaybeObserver文档一样,它在onSuccess之后永远不会调用onComplete。您在非测试代码中使用TestObserver继承的代码也是这样吗?不应该。TestObserver::onSuccess实现将协议转换为Observable,以便可以使用相同的TestObserver类测试Maybes、Singles和Completable。您还可以参考maybeflatmappis选择器。代码是否未显示使用两个arg平面图?
//FCMService.java
currentConversationRepo.getCurrentConversation()
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new MaybeObserver<CurrentConversation>() {
                        @Override
                        public void onSubscribe(@NonNull Disposable d) {
                            currentChatDisposable = d;
                        }

                        @Override
                        public void onSuccess(@NonNull CurrentConversation currentConversation) {
                            System.out.println("This is SUCCESS");
                            if (channelSid == null && author == null && usedAdId == null){
                                buildNotifyNotification(body, action, "", userId);
                            }

                            if (channelSid != null && author != null) {
                                if (!channelSid.equals(currentConversation.getChannelSid())) {
                                    createChatNotification(author, channelSid, body);
                                }
                            }
                            currentChatDisposable.dispose();
                        }

                        @Override
                        public void onError(@NonNull Throwable e) {
                            System.out.println("Error getting current conversation: " + e.getMessage());
                            currentChatDisposable.dispose();
                        }

                        @Override
                        public void onComplete() {
                            System.out.println("This is onComplete");
                            currentChatDisposable.dispose();
                        }
                    });
//TestObserver.java
@Override
public void onSuccess(T value) {
    onNext(value);
    onComplete();
}
//MaybeFlatMapBiSSelector.java
            @Override
            public void onSuccess(U value) {
                T t = this.value;
                this.value = null;

                R r;

                try {
                    r = ObjectHelper.requireNonNull(resultSelector.apply(t, value), "The resultSelector returned a null value");
                } catch (Throwable ex) {
                    Exceptions.throwIfFatal(ex);
                    actual.onError(ex);
                    return;
                }

                actual.onSuccess(r);
            }