在后台异常中修改的数组适配器

时间:2013-08-26 16:27:57

标签: android multithreading android-listview adapter android-arrayadapter

在我的应用程序中,我有一个不断从我的服务器更新的后台模型(某种数据库)。 我的问题是我有各种适配器,根据这个模型更新他们的数据。 每次更新模型时,我都会向活动发送广播,以便通知适配器(notifyDataSetChanged)。 90%的时间这完美,其他10% - 通常当UI线程工作非常努力(实例的onActivityResume)时,当线程有很多UI需要更新时 - 我得到以下错误:

“Thread:main,Exception:适配器的内容已更改,但ListView没有收到通知。.....确保适配器的内容不是从后台线程修改的,而是仅从UI中修改线。”

我的问题是:使用适配器和维护某种需要从后台线程更新的数据库的最佳做法是什么?

10倍

1 个答案:

答案 0 :(得分:1)

  1. 确保您从UI线程中调用notifyDataSetChanged
  2. 确保仅从UI线程更新适配器的内容。
  3. 您可以使用UI Handler线程及其消息队列,以便使用来自其他后台线程的UI线程将更新发布到数据模型。更多细节Android Handlers