我没有做任何疯狂的字符串操作。这对我来说是一个非常非常奇怪的错误。
这是我见过的堆栈跟踪......曾经且只有一次......永远:
java.lang.IndexOutOfBoundsException
at java.lang.AbstractStringBuilder.append0(AbstractStringBuilder.java:158)
at java.lang.StringBuilder.append(StringBuilder.java:312)
at java.lang.StringBuilder.append(StringBuilder.java:44)
at java.util.Formatter.outputCharSequence(Formatter.java:1115)
at java.util.Formatter.doFormat(Formatter.java:1105)
at java.util.Formatter.format(Formatter.java:1063)
at java.util.Formatter.format(Formatter.java:1032)
at java.lang.String.format(String.java:2104)
at java.lang.String.format(String.java:2078)
at com.my.app.package.myWebViewClient.onPageFinished(Unknown Source)
at android.webkit.CallbackProxy.handleMessage(CallbackProxy.java:270)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:126)
at android.app.ActivityThread.main(ActivityThread.java:3998)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599)
at dalvik.system.NativeStart.main(Native Method)
在myWebViewClient的onPageFinished中,我告诉myWebView加载这个脚本:
String A_VERY_LONG_SCRIPT = "a very long script" +
"that I format" + \\ some comment!
"in the source code!!" +
"some other things" +
"to make this script look really long";
String jsString = String.format("javascript:try{%s}catch(e){}", A_VERY_LONG_SCRIPT);
myWebView.loadUrl(jsString);
String.format调用是否有长度限制?如果这就是原因,为什么我不能在100%的时间甚至80%的时间内重现这个?
我无法重现此异常。即使我在每次测试中多次加载此脚本,我也只见过一次。我看到异常后没有更改代码。我已针对不同的OS版本进行了测试。我似乎无法再次触发异常,但我想知道为什么我在第一时间看到它。
那么,是什么导致了这个IndexOutOfBoundsException ???
我正在为Android 3.0 +开发。