我对 AsyncTask.THREAD_POOL_EXECUTOR 有共同的请求和响应。我已经手动实现了重试计数。现在,如果两个 Web 服务同时工作然后它使用彼此的重试计数会发生什么。
我正在使用客户端 OkHttpClient 进行改造。
我对 AsyncTask.THREAD_POOL_EXECUTOR 有共同的请求和响应。我已经手动实现了重试计数。现在,如果两个 Web 服务同时工作然后它使用彼此的重试计数会发生什么。
我正在使用客户端 OkHttpClient 进行改造。
我使用自定义回调(覆盖改造的回调)解决了它。在这个类中通过重试计数。因此,在响应成功或失败时,您将可以访问特定于 Web 服务的可变重试计数。所以在并行执行的情况下不会互相干扰。
@POST("/xyz/abc/")
void getSomeData(
@Body TypedInput body,
Callback<Response> callback);
您可以创建并传递您的自定义回调并保存一些对象/int 值以唯一标识请求。
public interface CustomOnRequestFinishedListener {
void onSuccess(Object response, Response retrofitResponse, Object data);
void onError(RetrofitError error, Object data);
}
在您要调用 CustomCallback 的地方实施 CustomOnRequestFinishedListener 并将获得成功/失败回调
public class CustomCallback extends CallBack
{
private final Object data;
private final CustomOnRequestFinishedListener customOnRequestFinishedListener;
public CustomCallback(CustomOnRequestFinishedListener customOnRequestFinishedListener, Object data)
{
this.data = data;
this.customOnRequestFinishedListener = customOnRequestFinishedListener;
}
@Override
public void success(Object o, Response response)
{
customOnRequestFinishedListener.onSuccess(o, response, data);
}
@Override
public void failure(RetrofitError error)
{
customOnRequestFinishedListener.onError(error, data);
}
}
通过这种方式,您最初将在请求中设置一些唯一数据,并将获得相同的数据作为响应。