我收到了少量 Crittercism 崩溃报告,其堆栈跟踪类似于下面的堆栈跟踪。崩溃并非源自我的代码。
此论坛帖子表明这可能是由于 TextView 的自定义 OEM 实现中的错误:
https ://groups.google.com/forum/?fromgroups=#!topic/android-developers/_53F4WBM8-I
任何人都可以确认是否是这种情况?即使很少有用户受到影响,我也很想知道是否有修复/解决方法?
到目前为止,我的崩溃报告显示这些设备受到影响:
- OS 2.3.6 上的阿尔卡特 ONE TOUCH 903
- OS 2.3.6 上的阿尔卡特 ONE TOUCH 918D
- OS 2.3.6 上的阿尔卡特 ONE TOUCH 991D
- OS 2.3.5 上的鹦鹉
- 操作系统 2.3.4 上的 A102S_MULA
- 操作系统 2.3.5 上的 T9199+
- 操作系统 2.3.6 上的三叉戟 A7
的堆栈跟踪StringIndexOutOfBoundsException
:
java.lang.StringIndexOutOfBoundsException
at java.lang.String.getChars(String.java:1059)
at android.text.SpannableStringInternal.getChars(SpannableStringInternal.java:102)
at android.text.TextUtils.getChars(TextUtils.java:101)
at android.text.Layout.processToSupportEmoji(Layout.java:3752)
at android.text.Layout.supportTabandEmoji(Layout.java:3790)
at android.text.Layout.measureText2(Layout.java:3148)
at android.text.Layout.getDesiredWidth2(Layout.java:183)
at android.text.Layout.getDesiredWidth2(Layout.java:161)
at android.widget.TextView.onMeasure2(TextView.java:5950)
at android.widget.TextView.onMeasure(TextView.java:6163)
at android.view.View.measure(View.java:8396)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:612)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:396)
at android.view.View.measure(View.java:8396)
at android.widget.ListView.setupChild(ListView.java:1862)
at android.widget.ListView.makeAndAddView(ListView.java:1789)
at android.widget.ListView.fillDown(ListView.java:705)
at android.widget.ListView.fillFromTop(ListView.java:762)
at android.widget.ListView.layoutChildren(ListView.java:1625)
at android.widget.AbsListView.onLayout(AbsListView.java:1299)
at android.view.View.layout(View.java:7225)
at android.widget.FrameLayout.onLayout(FrameLayout.java:369)
at android.view.View.layout(View.java:7225)
at android.widget.FrameLayout.onLayout(FrameLayout.java:369)
at android.view.View.layout(View.java:7225)
at android.support.v4.view.ViewPager.onLayout(ViewPager.java:1520)
at android.view.View.layout(View.java:7225)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1285)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1161)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1078)
at android.view.View.layout(View.java:7225)
at android.widget.FrameLayout.onLayout(FrameLayout.java:369)
at android.view.View.layout(View.java:7225)
at android.widget.RelativeLayout.onLayout(RelativeLayout.java:943)
at android.view.View.layout(View.java:7225)
at android.widget.FrameLayout.onLayout(FrameLayout.java:369)
at android.view.View.layout(View.java:7225)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1285)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1161)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1078)
at android.view.View.layout(View.java:7225)
at android.widget.FrameLayout.onLayout(FrameLayout.java:369)
at android.view.View.layout(View.java:7225)
at android.view.ViewRoot.performTraversals(ViewRoot.java:1189)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1914)
at android.os.Handler.dispatchMessage(Handler.java:130)
at android.os.Looper.loop(SourceFile:351)
at android.app.ActivityThread.main(ActivityThread.java:3833)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:538)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:659)
at dalvik.system.NativeStart.main(Native Method)
这是IndexOutOfBoundsException
:
java.lang.IndexOutOfBoundsException: getChars (6 ... 8) ends beyond length 7
at android.text.SpannableStringBuilder.checkRange(SpannableStringBuilder.java:1104)
at android.text.SpannableStringBuilder.getChars(SpannableStringBuilder.java:1008)
at android.text.TextUtils.getChars(TextUtils.java:101)
at android.text.Layout.processToSupportEmoji(Layout.java:3752)
at android.text.Layout.supportTabandEmoji(Layout.java:3790)
at android.text.StaticLayout.generate2(StaticLayout.java:722)
at android.text.DynamicLayout.reflow(DynamicLayout.java:404)
at android.text.DynamicLayout.access$000(DynamicLayout.java:70)
at android.text.DynamicLayout$ChangeWatcher.reflow(DynamicLayout.java:592)
at android.text.DynamicLayout$ChangeWatcher.onTextChanged(DynamicLayout.java:604)
at android.text.SpannableStringBuilder.sendTextChange(SpannableStringBuilder.java:1050)
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:470)
at android.text.SpannableStringBuilder.change(SpannableStringBuilder.java:387)
at android.text.SpannableStringBuilder.replaceInternal(SpannableStringBuilder.java:593)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:542)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:527)
at android.text.SpannableStringBuilder.replace(SpannableStringBuilder.java:67)
at android.view.inputmethod.BaseInputConnection.replaceText(BaseInputConnection.java:701)
at android.view.inputmethod.BaseInputConnection.commitText(BaseInputConnection.java:227)
at com.android.internal.widget.EditableInputConnection.commitText(EditableInputConnection.java:153)
at com.android.internal.view.IInputConnectionWrapper.executeMessage(IInputConnectionWrapper.java:304)
at com.android.internal.view.IInputConnectionWrapper$MyHandler.handleMessage(IInputConnectionWrapper.java:106)
at android.os.Handler.dispatchMessage(Handler.java:130)
at android.os.Looper.loop(SourceFile:351)
at android.app.ActivityThread.main(ActivityThread.java:3833)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:538)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:659)
at dalvik.system.NativeStart.main(Native Method)