如何重复任务直到某个时间或直到收到答案?

时间:2014-04-14 07:41:00

标签: java android android-asynctask

我希望我的ui线程运行一个ansycTask(例如获取当前位置)

但是我想按时间限制它。你会建议这样做吗?

我曾想过触发计时器,但我不确定如何。

另外如果我想重复一个返回布尔值

的asyncTask

我想给它3次重试机会。

我该如何实现?

我已经考虑过做几个帖子,检查一个静态标志,表明已经收到了答案,但我不确定这是正确的方法。

1 个答案:

答案 0 :(得分:0)

ScheduledThreadPoolExecutor的一种方法。这将允许您在预定的时间运行一个线程。您可以使用方法scheduleWithFixedDelay在指定时间运行任务。

通过实施Runnable创建您的任务。使用Executor方法scheduleWithFixedDelay(Runnable command, long initialDelay, long delay, TimeUnit unit)

执行人将在您指定的时间后执行您的任务。在您的任务中,您可以检查任务是否应该重试。满足条件或达到重试后,您可以取消该任务。您可以使用shutdown方法结束任务。

完成此任务的简单课程:

class RetryTask implements Runnable {
 int retries = 3;
 @Override
 public void run() {
  if(--retries == 0) {
    //shutdown
  }
  if(location recieved) {
   //shutdown
  }
  //else do your task
 }
}