从活动中制作定期URL请求

时间:2012-11-22 08:19:09

标签: android

我有一个定期请求的活动(每15秒一次获取一个json数据源)。我传递给AsyncTask的请求所以它不在主UI线程上。到现在为止还挺好。但是我们可以说我请求了Feed,并且需要20秒才能响应。我真的不想开始另一个线程,直到30秒钟结束。所以......

有没有办法防止AsyncTask在第一个尚未完成时运行?

还有一种方法可以将AsyncTask的时间间隔设置为不超过30秒吗?不管Http超时?

谢谢, 史蒂夫

1 个答案:

答案 0 :(得分:0)

您可以使用互斥变量来强制执行此操作。说,我们称之为变量update。这将是一个初始值为true的布尔变量。

在运行异步任务之前,请检查update的值,如果true运行异步任务并将update设置为false

在异步任务结束后,在onPostExecute()方法中,再次将update设置为true

因此,当一个尚未完成时,将不会启动另一个异步任务,从而确保排他性。