2013-08-06 62 views
-1

我有一個AsyncTask類,它可以處理我的應用的所有網絡呼叫。我也有一個持有進度對話框的Globals類。現在,我想要的是一次只有一個進度對話框;這很簡單。 Globals類會初始化對話框,並且每次被AsyncTask使用時,只會更改消息。我的問題是確定何時解僱它。如果我在onPostExecute()的末尾使用p.dismiss(),則進度條將消失,直到下一個AsyncTask運行,這不是我想要的。但是,如果我不包含該行,那麼進度對話框將無限期地保持不變。我想我試圖找到的是一種方法,看看是否所有AsyncTasks已完成運行。通過這樣做,那麼這個全球進度對話框就能夠關閉而不會看起來不整潔。Android全局進度對話框

將所有AsyncTasks鏈接在一起不是一個選項(例如,第一個在onPostExecute()中執行第二個)。

還要注意,有可能是之間的任何一個和五個AsyncTasks在同一時間運行。

如何確定每個AsyncTask是否完整?

回答

1

,你可以跟蹤你有多少開始的,並創建一個回調到每類任務的完成時間,然後在返回的計數開始匹配算你知道所有的任務都做了。

真的沒有辦法知道什麼時候看到哪些任務正在運行而沒有做這樣的事情。

有一個getStatus但你必須保持輪詢狀態或看個人任務完成不

+0

啊。我擔心會這樣。好吧。感謝您的幫助。 和網站告訴我,我必須等待4分鐘,給你最好的答案。 –

+2

您不需要輪詢每個任務的onPostExecute,查看是否所有其他任務都已完成。如果是這樣,那麼他們都完成了。如果沒有,那麼不是所有的人都完成了。所以你只需要保存一個已經開始的任務列表。但是對於他的使用,一個簡單的變量會在每個任務的onPreExecute中遞增,並在每個類的onPostExecute中遞減,並在達到0時關閉dialgo。 –

+0

Gabe,這實際上比我想象的要簡單得多。謝謝;這是非常有用:) –