我有三个AsyncTask实例同时下载三个文件。当两个特定的结束时,在onPostExecute()
结束时,我检查每个标志设置的标志,如果两者都为真,我会调用startActivity()
进行下一个活动。
我目前看到两次调用的活动,或者类似于此类行为的活动。由于屏幕执行“向左滑动”过渡到下一个活动,它有时会执行两次(当我回击时,它会返回到相同的活动)。很明显,只有一次调用 SHOULD 的两个活动版本被放在Activity堆栈上。
这可能来自同时执行的onPostExecute()和同时检查彼此设置的标志吗?这似乎极不可能,因为两个进程必须并行运行......
*****编辑***从这个问题中删除了很多,因为我认为错了。尽管如此,我发现这里的答案非常有用,所以我编辑了这个问题以反映有用的部分。
答案 0 :(得分:1)
我能找到的唯一方法就是这样 可能是两个AsyncTasks' onPostExecute()执行SO 同时他们是 虚拟地运行相同的线路 同时,因为我设置了 'itemXdownloaded'标志为true 在我检查两个并打电话之前 startActivity()。
因为它们都是在主应用程序线程上调用的,所以这是不可能的,除非你做的事情很奇怪。
我会介绍一些Log
电话,以确保您不会误解这些症状。
除此之外,很难从你的伪代码中看到任何问题,除非有超出所示三个值的其他downloadID
值。例如,如果在DL4
和DL4
之后有DL1
和DL2
完成,DL4
会触发您的活动。