2010-05-08 79 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

相关问题