答案 0 :(得分:3)
听起来就像项目可用时,您正在从AsyncTask中的工作线程更新列表适配器。在UI线程中遍历相同的适配器以呈现列表。这可能会导致随机崩溃,因为您可能正在为下一个项目更新列表适配器,同时它仍在响应之前的notifyDataSetChanged()
。
更新列表适配器的更好方法是使用处理程序将runnable发布到UI线程中,该线程将更新列表适配器并调用notifyDataSetChanged()
。
图像更新可能会发生类似情况。
作为一般策略,应该在UI线程上更新UI所依赖的任何数据结构。它往往更安全。另一种策略是仔细同步代码的关键部分,但要做到这一点要困难得多。