我的代码很简单,但会导致奇怪的IndexOutOfBoundsResponse.
It happens only once in ten thousands,但它发生了.我只能在Firebase Crashlytics报告中看到它们.
你能看到这个问题吗?还是我应该忽略它?
private val mTaskList = ArrayList<Task>()
// a element is added to the list.
// The list usually contains only one element.
private var w或ker: TaskW或ker? = null
...
// Only one TaskW或ker can exist.
if(w或ker==null){
Thread(TaskW或ker().also{
w或ker = it
}).start()
}
...
inner class TaskW或ker : Runnable {
override fun run() {
while (mTaskList.size > 0) {
TaskList.removeAt(0).run { // causes java.lang.ArrayIndexOutOfBoundsException: length=10; index=-1 (或 Index: 0, Size: 0)
...
}
}
w或ker = null // Only one TaskW或ker can exist.
}
}
TaskList.removeAt(0)导致执行. (I can see them only in the Firebase Crashlytics rep或t)
Fatal Exception: java.lang.ArrayIndexOutOfBoundsException: length=10; index=-1
或
Fatal Exception: java.lang.ArrayIndexOutOfBoundsException: Index: 0, Size: 0
StackTrace就是这样的
java.util.ArrayList.remove (ArrayList.java:503)
<my package>.MainActivity$TaskW或ker.run (MainActivity.kt:452)
java.lang.Thread.run (Thread.java:923)