99%的案例正常工作,有时候应用程序被最小化并且我重新打开它会有例外:
java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0 at java.util.ArrayList.throwIndexOutOfBoundsException
for (int i = 0; i < list.size(); ++i)
{
description.setText(list.get(i).getStreet()); //this line Exception
}
我在onStart()
方法中运行:
是什么原因? 我怎么能在将来避免这种情况?
答案 0 :(得分:1)
在不同的线程中使用列表可能是一个原因。如果您使用的是未同步的List实现,请将其替换为synchronized one:
List list = Collections.synchronizedList(new ArrayList());
或Vector
或CopyOnWriteList
。
<强>编辑:强>
感谢您的评论!他们是对的。
对我来说最简单的似乎是使用CopyOnWriteArrayList并使用for-each循环迭代它。或者您可以使用此答案中的任何其他选项:Thread-safe iteration over a collection