1

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

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

请帮忙谢谢

4

2 回答 2

4

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

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

于 2013-02-07T19:18:19.483 回答
1

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

于 2013-02-07T19:18:41.190 回答