Android当AsyncTask运行太多时如何停止/取消AsyncTask?

时间:2013-03-03 11:14:43

标签: android android-asynctask

我正在研究实时消息应用程序。我写了处理接收传入消息的部分。当我收到消息时,我将在SQ-LITE中插入记录并触发回调以通知更新的UI(ListView)。在回调中,我实现了一些更新UI的东西。我正在使用游标适配器。在回调中,我将在后台启动AsyncTask,我将查询数据库以获取聊天记录。在onPostExecute中,我将使用从后台查询的光标并分配给适配器并更新UI。

所以我的问题是: 如果有许多传入消息,它将触发许多AsyncTask并多次更新UI。因此它会使ListView非常“滞后”甚至用户无法做任何事情。如何停止/取消AsyncTask并仅处理最新的{1},因为我将获取数据库中的所有聊天记录,这意味着对数据库中聊天记录的最新查询应该是正确的。
任何人都可以建议如何阻止AsyncTask或任何其他想法来处理此案例吗?

1 个答案:

答案 0 :(得分:2)

在创建它们时(或在onPreExecute()方法中)将AsyncTasks放入List中,并在它们完成时从列表中删除它们(在onPostExecute()方法中)。这样你的列表将包含所有当前的,而不是已完成的AsyncTasks,所以当你需要停止所有这些时,只需遍历列表并停止每个任务,除了最后添加的任务。