通过针对Android游戏应用的错误报告获取一些奇怪的异常。
导致问题的具体代码是(mOutroTextLayout是一个StaticLayout对象):
if(mOutroTextLayout != null) {
canvas.save();
canvas.translate((25 * mScale) + 0.5f, (78 * mScale) + 0.5f);
mOutroTextLayout.draw(canvas); // This is line 903
canvas.translate(-((25 * mScale) + 0.5f), -((78 * mScale) + 0.5f));
canvas.restore();
}
它生成的异常错误:
java.lang.IndexOutOfBoundsException: charAt: 49 >= length 69
at android.text.SpannableStringBuilder.charAt(SpannableStringBuilder.java:112)
at android.text.Layout.getLineVisibleEnd(Layout.java:967)
at android.text.Layout.draw(Layout.java:267)
at android.text.Layout.draw(Layout.java:153)
at com.myapps.android.myapp.MapView.onDraw(MapView.java:903)
at com.myapps.android.myapp.MapThread.run(MapThread.java:83)
让我感到困惑的是49> =长度69错误消息。我暗示了线程/同步的问题,其中mOutroTextLayout在一个线程中创建/修改,并在另一个线程中访问?