2010-05-08 40 views
3

我有三個同步的AsyncTask實例用於下載三個文件。當兩個特定的結束時,在onPostExecute()的末尾,我檢查每個標記設置的標記,如果兩個都是對的,我將爲下一個活動調用startActivity()相同的活動調用兩次...問題與多個AsyncTasks?

我目前正在看到被稱爲兩次的活動,或類似於此類行爲的東西。由於屏幕會「向左滑動」,因此有時會執行兩次(當我回擊時,它會返回到同一活動)。很顯然,只有一次調用的活動的兩個版本才被放到Activity堆棧中。

這可能是來自onPostExecute()同時執行和兩個檢查標誌互相設置在同一時間嗎?這似乎是極不可能的,因爲兩個進程將不得不併行地逐行運行...

*****編輯***從這個問題很多刪除,因爲我在我的想法錯了。儘管如此,我發現這裏的答案非常有用,所以我編輯了這個問題以反映有用的部分。如果兩個AsyncTasks' onPostExecute()執行SO 同時,他們 幾乎運行相同的線在 同一時間,因爲我設置

回答

1

我能找到,這是 可能的唯一方法是'itemXdownloaded'標誌爲真正的右側 ,然後再檢查兩者並致電 startActivity()。

既然它們都在主應用程序線程中調用,那麼這是不可能的,除非你正在做一些非常奇怪的事情。

我會介紹一些Log調用,以確保您不會誤解症狀。

除此之外,很難從您的僞代碼中看到任何問題,除非有其他downloadID值可能超出所示的三個值。例如,如果在DL1DL2之後完成DL4DL4,則DL4會觸發您的活動。

+0

嗯,你是對的主要應用程序線程。沒有想到這一點。所以它*必須*是一個邏輯問題的地方...謝謝。 – stormin986 2010-05-09 00:58:32