我有一个定期请求的活动(每15秒一次获取一个json数据源)。我传递给AsyncTask的请求所以它不在主UI线程上。到现在为止还挺好。但是我们可以说我请求了Feed,并且需要20秒才能响应。我真的不想开始另一个线程,直到30秒钟结束。所以......
有没有办法防止AsyncTask在第一个尚未完成时运行?
还有一种方法可以将AsyncTask的时间间隔设置为不超过30秒吗?不管Http超时?
谢谢, 史蒂夫
答案 0 :(得分:0)
您可以使用互斥变量来强制执行此操作。说,我们称之为变量update
。这将是一个初始值为true
的布尔变量。
在运行异步任务之前,请检查update
的值,如果true
运行异步任务并将update
设置为false
。
在异步任务结束后,在onPostExecute()
方法中,再次将update
设置为true
。
因此,当一个尚未完成时,将不会启动另一个异步任务,从而确保排他性。