0

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

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

4

1 回答 1

2

创建 AsyncTask 时(或在 onPreExecute() 方法中)将它们放入列表中,并在完成时将它们从列表中删除(在 onPostExecute() 方法中)。这样,您的列表将包含所有当前的、未完成的 AsyncTask,因此当您需要停止所有任务时,只需遍历列表并停止每个任务,除了最后添加的任务。

于 2013-03-03T12:52:32.377 回答