我有以下代码:
Single<Item> update(...) {
...
return Single.create(subscriber -> aCall.execute(..) {
public void onResponse(..){
subscriber.onSuccess(..)
}
public void onError() {
if(shouldReset) {
subscriber.unsubscribe();
} else {
subscriber.onError();
}
}
}));
}
调用方法时:
update(..)
.doOnSubscribe(counter++)
.doAfterTerminate(counter--)
.subscribe();
我注意到,如果调用
subscriber.unsubscribe();
,则计数器永远不会减少。这是为什么?如果从
doAfterTerminate()
中的doOnUnsubscribe()
更改,计数器将减少。 最佳答案
doAfterTerminate()
在由于onError
或onComplete
而终止的情况下有效,但不能取消订阅。
取消订阅时,也可以使用doFinally
或将doAfterTerminate()
与doOnCancel
组合来获得呼叫。
有关差异的说明,请参见this answer。
关于android - RXJava取消订阅()之后的单,是否不调用doAfterTerminate()?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49380358/