我希望我的ui线程运行一个ansycTask(例如获取当前位置)
但是我想按时间限制它。你会建议这样做吗?
我曾想过触发计时器,但我不确定如何。
另外如果我想重复一个返回布尔值
的asyncTask我想给它3次重试机会。
我该如何实现?
我已经考虑过做几个帖子,检查一个静态标志,表明已经收到了答案,但我不确定这是正确的方法。
答案 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
}
}