我正在使用asynctask来执行冗长的操作,例如DB读取。我想在所有异步任务完成后启动一个新活动并呈现其内容。实现这一目标的最佳方法是什么?
我知道onPostExecute用于更新屏幕。但我不想更新屏幕,除非所有的ayncTasks都已完成
请帮忙 感谢
答案 0 :(得分:4)
不要过度复杂化:只需使用每onPostExecute
增加一个的计数器。如果任务发现此计数器被最大化(等于您生成的任务数),则它可以运行更新代码。
请注意,您不需要锁定此计数器,因为onPostExecute
在UI线程中运行。
答案 1 :(得分:1)
只是一个建议,您可以创建一个布尔数组,其大小与Asynctask的数量相同。每个Asynctask都有一个ID,它是布尔数组的索引。在onPostExecute或其他回调中,您可以检查所有条目是否都为真。然后你知道这一切都已完成。另一种方法是,你为每个Asynctask分配唯一的id,你也有这些id的总和,当其中一个完成时,你从总和中减去它的id,当它达到零时,你也知道它们都完成了。不完美,只是一些建议。