gpt4 book ai didi

android - 订户 OnComplete 调用了两次

转载 作者:行者123 更新时间:2023-11-29 17:39:01 26 4
gpt4 key购买 nike

为什么 #onComplete() 被调用了两次,即使 #addSomething() 只被调用了一次?这是代码 fragment :

private void addSomething() {
Subscriber<AddCommentResponse> subscriber = createSubscriber();

NetworkService.getIp()
.subscribeOn(Schedulers.io())
.flatMap(addSomethingService)
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(subscriber);
}

private Subscriber<AddCommentResponse> createSubscriber() {
return new Subscriber<AddCommentResponse>() {
@Override
public void onCompleted() {
this.unsubscribe();

Toast.makeText(
MyApplication.context, getString(R.string.toast_comment_added_successfully), Toast.LENGTH_LONG
).show();
navigateBack();
}

@Override
public void onNext(AddCommentResponse response) {
onCompleted();
}
};

最佳答案

RxJava 遵循这个约定:它会调用你的观察者 onNext,然后用 onComplete 或 onError 调用结束你的流。

您不必这样做。 RX 会为您完成。

  • 从 onNext 方法中删除 onComplete() 调用:它没有用,但会解决您的问题。
  • createSubscribe 应该返回一个 Observer。订阅者是具有不同含义的观察者。 (订阅方法参数为Observer)

关于android - 订户 OnComplete 调用了两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29462592/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com