最近我開始使用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