最近我开始使用Retrofit进行开发,并且可以立即注意到它没有提供一些重要的功能,例如重试,认证处理,优先级排序等等。翻新:如何解决请求重复
我设法实现了优先级排序并重试自己,但遇到了更难解决的问题。
我想在网络请求到达执行器的队列之前“捕捉”网络请求,以避免一次又一次地重复相同的请求。
例如,用户有时可以一个接一个地刷新5次,我不想调用5个相同的请求。相同请求的检查很容易 - 具有相同参数的相同域。
这是我实现:
// the thread factory of the thread pool, we using it to indicate the threads' priority
ThreadFactory threadFactory = new ThreadFactory() {
@Override
public Thread newThread(Runnable r) {
Thread t = new Thread(r);
t.setPriority(threadPriority);
return t;
}
};
mQueue = new LinkedBlockingQueue<Runnable>();
mExecuter = new ThreadPoolExecutor(CORE_POOL_SIZE, MAXIMUM_POOL_SIZE, KEEP_ALIVE_TIME, KEEP_ALIVE_TIME_UNIT, mQueue);
mExecuter.setThreadFactory(threadFactory);
mRestAdapter = new RestAdapter.Builder().setClient(new AndroidApacheClient()).setExecutors(mExecuter, mExecuter)
.setEndpoint(NetworkContants.DOMAIN).setRequestInterceptor(mRequestInterceptor).setConverter(new GsonConverter(new Gson()))
.build();
您的问题 – 2017-08-04 14:03:08