“all”asynctasks完成后更新屏幕

时间:2013-02-07 19:11:13

标签: android

我正在使用asynctask来执行冗长的操作,例如DB读取。我想在所有异步任务完成后启动一个新活动并呈现其内容。实现这一目标的最佳方法是什么?

我知道onPostExecute用于更新屏幕。但我不想更新屏幕,除非所有的ayncTasks都已完成

请帮忙 感谢

2 个答案:

答案 0 :(得分:4)

不要过度复杂化:只需使用每onPostExecute增加一个的计数器。如果任务发现此计数器被最大化(等于您生成的任务数),则它可以运行更新代码。

请注意,您不需要锁定此计数器,因为onPostExecute在UI线程中运行。

答案 1 :(得分:1)

只是一个建议,您可以创建一个布尔数组,其大小与Asynctask的数量相同。每个Asynctask都有一个ID,它是布尔数组的索引。在onPostExecute或其他回调中,您可以检查所有条目是否都为真。然后你知道这一切都已完成。另一种方法是,你为每个Asynctask分配唯一的id,你也有这些id的总和,当其中一个完成时,你从总和中减去它的id,当它达到零时,你也知道它们都完成了。不完美,只是一些建议。