- synchronized(retryPendingTasks){
- for(ExecutableRunnable task : retryPendingTasks)
- task.execute();
- retryPendingTasks.clear();
+ if(!retryIsScheduled && lastRetry+RETRY_INTERVAL>SystemClock.elapsedRealtime()){
+ retryIsScheduled = true;
+ EXECUTORS.schedule(new Runnable() {
+ @Override
+ public void run() {
+ retryTasks();
+ retryIsScheduled = false;
+ }
+ }, RETRY_INTERVAL, TimeUnit.MILLISECONDS);
+ return;
+ }
+ synchronized(RETRY_PENDING_TASKS){
+ for(ExecutableRunnable task : RETRY_PENDING_TASKS)
+ EXECUTORS.execute(task);
+ RETRY_PENDING_TASKS.clear();