Crashlytics和Google Play控制台都会为至少两位用户报告此次崩溃。 致命异常:java.lang.ArrayIndexOutOfBoundsException:length = 10;指数= -1 在java.util.ArrayList ….
不应该崩溃不可能吗?
如果有另一个线程修改,也不是不可能的 ArrayList 。
ArrayList
例如:
if ( (savedState.userEntries.size()>0) && // Another thread empties the list NOW (savedState.userEntries.get(savedState.userEntries.size()-1).getDuration()==0) ) {
如果可以从多个线程访问和修改这些数据结构,则可以:
synchronized
您需要在基于a的方法之间进行选择 总体 评估当前数据结构的使用方式。例如,您可能希望将其替换为 Queue 。
Queue
(一些可能的解决方案不起作用;例如更换 ArrayList 同 synchronizedList(list) 因为你在这里做2个列表操作,所以不会在这里工作( size &安培; get )需要作为原子操作执行。)
synchronizedList(list)
size
get