4

我有一个 AsyncTask 的三个同时实例来下载三个文件。当两个特定的完成时,最后onPostExecute()我检查每个设置的标志,如果两者都为真,我会调用startActivity()下一个活动。

我目前看到该活动被调用了两次,或者类似于这种行为的东西。由于屏幕会“向左滑动”过渡到下一个活动,因此它有时会执行两次(当我回击时,它会返回到同一个活动)。很明显,应该只调用一次的活动的两个版本被放在活动堆栈上。

这可能是因为两个 onPostExecute() 同时执行并且都检查彼此在完全相同的时间设置的标志吗?这似乎极不可能,因为两个进程必须并行运行...

***** EDIT *** 从这个问题中删除了很多,因为我认为我错了。尽管如此,我发现这里的答案非常有用,因此我编辑了问题以反映有用的部分。

4

1 回答 1

1

我发现这是可能的唯一方法是,如果两个 AsyncTasks 的 onPostExecute() 同时执行,它们实际上同时运行相同的行,因为我在检查两者之前将 'itemXdownloaded' 标志设置为 true并调用 startActivity()。

因为它们都是在主应用程序线程上调用的,所以这是不可能的,除非你正在做一些非常奇怪的事情。

我会介绍一些Log电话,以确保您没有误读症状。

除此之外,很难从您的伪代码中看出任何问题,除非可能存在downloadID超出所示三个值的其他值。例如,如果在 and 之后有, DL4andDL4完成,则会触发您的活动。DL1DL2DL4

于 2010-05-09T00:32:07.940 回答