为什么会崩溃?
通过查看异常,一切都表明您错误地遍历了数组(或列表)。
检查主要信息
java.lang.ArrayIndexOutOfBoundsException:长度=42;索引=42
弄清楚接下来会发生什么更加棘手,主要是因为我们没有有关代码的任何信息:
at maps.ah.k.a(Unknown Source:4000)
at maps.ah.k.a(Unknown Source)
at maps.ah.k.a(Unknown Source)
at maps.ah.i.a(Unknown Source)
为什么它可以在其他一些设备上运行?
不同的 Android 设备具有不同的软件基础和硬件基础(取决于制造它们的公司),因此人们可能会在某些时候看到不同的行为。
因此,即使其他设备可以处理非致命异常,但联想K50a40似乎无法处理。或者甚至可能是联想系统设计错误,无从得知。
我该怎么办?
你无能为力。
我帮助您找到路径的解决方案是:
- 将控制台日志放置在尽可能多的地方。
- 删除尽可能多的逻辑并一点一点地添加,直到找到破坏它的东西。
- 去除
forEach
在java中并强制常规for (int i = 0; i < maps.size(); i++)
我可以在任何地方循环,并监视i
.
代码评估
这就是说,有些东西我不太能从你的代码中得到。
if (map.isPause()) {
if (Validator.isNull(lastPause) || !lastPause) {
option = new PolylineOptions().width(5).color(Color.rgb(255, 0, 155)).geodesic(true);
polylineOptionses.add(option);
}
option.add(new LatLng(map.getLatitude(), map.getLongitude()));
} else {
if (Validator.isNull(lastPause) || lastPause) {
option = new PolylineOptions().width(5).color(Color.rgb(0, 179, 253)).geodesic(true);
polylineOptionses.add(option);
}
option.add(new LatLng(map.getLatitude(), map.getLongitude()));
}
如果发生什么情况map.isPause()
返回 true 并且Validator.isNull(lastPause) || !lastPause
返回假?
如果我理解正确的话,你就会跑步option.add(new LatLng(map.getLatitude(), map.getLongitude()));
在空对象上。
这将导致空异常。
你能提供一些背景吗pointList
多变的?
我知道这可能不是您所希望的,但我仍然希望它能有所帮助。