用戶有一個項目列表,比方說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