restart和IndexOutOfBoundsException奇怪的原因,将来如何避免这种情况?

时间:2014-11-20 10:19:43

标签: java android arraylist indexoutofboundsexception

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()方法中运行:

是什么原因? 我怎么能在将来避免这种情况?

1 个答案:

答案 0 :(得分:1)

在不同的线程中使用列表可能是一个原因。如果您使用的是未同步的List实现,请将其替换为synchronized one:

List list = Collections.synchronizedList(new ArrayList());

VectorCopyOnWriteList

<强>编辑:

感谢您的评论!他们是对的。

对我来说最简单的似乎是使用CopyOnWriteArrayList并使用for-each循环迭代它。或者您可以使用此答案中的任何其他选项:Thread-safe iteration over a collection