将长字符串加载到WebView时出现奇怪的IndexOutOfBoundsException

时间:2012-12-27 20:01:58

标签: android android-webview android-3.0-honeycomb

我没有做任何疯狂的字符串操作。这对我来说是一个非常非常奇怪的错误。

这是我见过的堆栈跟踪......曾经且只有一次......永远:

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 +开发。

0 个答案:

没有答案