gpt4 book ai didi

android - 如何订阅点击事件以便异常不会取消订阅?

转载 作者:行者123 更新时间:2023-11-29 00:16:41 31 4
gpt4 key购买 nike

我正在使用 RxJava for Android (RxAndroid)我订阅了一个 View 的点击事件,并按如下方式对它们进行操作:

subscription = ViewObservable.clicks(view, false)
.map(...)
.subscribe(subscriberA);

问题是每当出现异常时,subscriberA 会自动取消订阅,导致下一次点击不会触发任何内容。

如何处理异常,不管是否抛出异常,都拦截所有的点击事件?

最佳答案

使用retry方法:

subscription = ViewObservable.clicks(view, false)
.map(...)
.retry()
.subscribe(subscriberA)

但是,您不会在 onError 中收到任何异常。要使用重试(重新订阅)逻辑处理异常,请使用 retryWhen :

subscription = ViewObservable.clicks(view, false)
.map(...)
.retryWhen(new Func1<Observable<? extends Notification<?>>, Observable<?>>() {

@Override
public Observable<?> call(Notification errorNotification) {
Throwable throwable = errorNotification.getThrowable();
if (errorNotification.isOnError() && handleError(throwable)) {
// return the same observable to resubscribe
return Observable.just(errorNotification);
}
// return unhandled error to handle it in onError and unsubscribe
return Observable.error(throwable);
}

private boolean handleError(Throwable throwable) {
// handle your errors
// return true if error handled to retry, false otherwise
return true;
}
}
.subscribe(subscriberA)

关于android - 如何订阅点击事件以便异常不会取消订阅?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26154236/

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