0

我有一个定期发出请求的活动(每 15 秒一次以获取 json 数据馈送)。我传递给 AsyncTask 的请求因此不在主 UI 线程上。到目前为止,一切都很好。但是假设我请求提要并且需要 20 秒才能响应。在说 30 秒结束之前,我真的不想启动另一个线程。所以 ....

如果第一个尚未完成,有没有办法阻止 AsyncTask 运行?

还有一种方法可以将 AsyncTask 时间框化为不超过 30 秒吗?无视 Http 超时?

谢谢,史蒂夫

4

1 回答 1

0

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

在运行异步任务之前,检查 的值update,如果是true运行异步任务并设置updatefalse

异步任务结束后,在onPostExecute()方法中,再次设置updatetrue

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

于 2012-11-22T08:32:08.567 回答