用户有一个项目列表,比方说10个项目。每个项目都有一个操作按钮,它调用一个可以进行Web通话的AsyncTask。当调用时,该项目任务的执行过程中会显示一个微调
问题:
一些用户的滥用这一点,并快速按下多个操作按钮,quicklt此起彼伏,执行网络电话太频繁。所以我希望能够以某种方式,在执行之间延迟2秒执行每个AsyncTasks。如果可能的话,我不想从AsyncTask切换到别的东西。因此,基本上,如果有按下3的操作按钮时,执行应该是:
- >操作1 - > 2秒延时 - >操作2 - > 2秒延时 - >操作3 - > .. ..
在Android中这样做的最好方法是什么?
LE:
我刚刚意识到的东西,用于执行我的任务我跑到下面的代码:
myTask = new MyTask();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
myTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
} else {
myTask.execute();
}
嗯,我已经使用了很多的时间这个代码现在,知道在蜂窝之后,如果不使用Executor,任务不会并行执行。所以看起来只需要做一个简单的myTask.execute()并添加一个Thread.sleep()就可以让我的AsyncTasks按照预期一个接一个地执行。
也许我失去了一些东西,但如果我按接连3个的操作按键之一,在过去2个项目将在几乎同时进行,因为有将是最后2个线程的睡眠时间为2秒,几毫秒让我按下按钮... – Alin
如何使用进度对话框?当任务正在运行时显示它..当进度对话框在屏幕上可见时..用户将无法触及其他操作按钮...当任务完成时..关闭onPostExecute方法中的对话..这样将只有一个任务将运行.. – Tarun
另一种选择是维护需要执行的操作的列表....在点击按钮上添加动作到列表..并调用一个方法来检查是否已经有一个正在运行的任务。它没有任何运行..它执行数组列表中的操作.....在后执行方法从数组列表中删除操作..并调用相同的方法来检查是否有任何其他操作需要被执行.... – Tarun