Android RxJava取消对'的请求;单个.fromCallable',一次性.清除导致的中断异常
我在我的应用程序中使用RxJava和AWS API网关 代码如下:Android RxJava取消对'的请求;单个.fromCallable',一次性.清除导致的中断异常,android,rx-java,rx-java2,Android,Rx Java,Rx Java2,我在我的应用程序中使用RxJava和AWS API网关 代码如下: @Override public Single<SearchResponse> searchPostsApiCall(String keyword, String offset) { return Single.fromCallable(() -> client.postSearch(keyword,offset)); } // to call api getCompo
@Override
public Single<SearchResponse> searchPostsApiCall(String keyword, String offset) {
return Single.fromCallable(() -> client.postSearch(keyword,offset));
}
// to call api
getCompositeDisposable().add(searchPostsApiCall(keyword,offset)
.subscribeOn(getSchedulerProvider().io())
.observeOn(getSchedulerProvider().ui())
.subscribe(response -> onResponseReceived(response, offset, finalType), this::onError)
);
如何实现保存命中率的目标?任何想法都是值得欣赏的
谢谢一些API通过抛出无法中继的异常来响应取消。如果这样的崩溃是一致的,比如您总是从这样的API中得到
InterruptedIOException
,那么您可以专门忽略这样的异常,这样RxJava就不会知道它们了
通过fromCallable
实现这一点有些困难,因为您必须返回非null的内容,但可能无法创建所涉及类型的实例。因此,我建议使用create:
Single.create(发射器->{
试一试{
onSuccess(client.postSearch(关键字,偏移量));
}捕获(InterruptedIOException ex){
//忽略
}捕获(可丢弃的ex){
发射极误差(ex);
}
});
编辑如果您可以创建ąnSearchResponse
,您可以使用callable中的:
Single.fromCallable(()->{
试一试{
返回client.postSearch(关键字,偏移量);
}捕获(InterruptedIOException ex){
//fromCallable实际上不会发出此消息
返回新的SearchResponse();
}
});
既然是发射器,它是否会停止观察成功/错误?请也看看:有没有办法降低开销为什么我应该看自己的答案?因为你提到“fromCallable”比“create”更重要。这个问题与崩溃无关。
'ApiClientException: java.io.InterruptedIOException: thread interrupted'