StackOverflowError是一种错误类型,发生在程序调用过程中的栈溢出情况。这个错误发生在android.support.v7.widget.GridLayout$Axis$1.walk方法的1315行。

4

仅当应用在某些设备上运行时,我才会收到 StackOverflowError 错误,而在其他设备上则正常工作。

以下是堆栈跟踪:

java.lang.StackOverflowError
at android.support.v7.widget.GridLayout$Axis$1.walk(GridLayout.java:1315)
...
...
at android.support.v7.widget.GridLayout$Axis$1.walk(GridLayout.java:1315)
at android.support.v7.widget.GridLayout$Axis$1.sort(GridLayout.java:1333)
at android.support.v7.widget.GridLayout$Axis.topologicalSort(GridLayout.java:1304)
at android.support.v7.widget.GridLayout$Axis.topologicalSort(GridLayout.java:1342)
at android.support.v7.widget.GridLayout$Axis.createArcs(GridLayout.java:1376)
at android.support.v7.widget.GridLayout$Axis.getArcs(GridLayout.java:1390)
at android.support.v7.widget.GridLayout$Axis.computeLocations(GridLayout.java:1575)
at android.support.v7.widget.GridLayout$Axis.getLocations(GridLayout.java:1596)
at android.support.v7.widget.GridLayout$Axis.getMeasure(GridLayout.java:1617)
at android.support.v7.widget.GridLayout$Axis.getMeasure(GridLayout.java:1625)
at android.support.v7.widget.GridLayout.onMeasure(GridLayout.java:939)
at android.view.View.measure(View.java:12911)
at android.widget.HorizontalScrollView.measureChildWithMargins(HorizontalScrollView.java:1159)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:297)
at android.widget.HorizontalScrollView.onMeasure(HorizontalScrollView.java:303)
at android.view.View.measure(View.java:12911)
at android.widget.ScrollView.measureChildWithMargins(ScrollView.java:1163)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:297)
at android.widget.ScrollView.onMeasure(ScrollView.java:312)
at android.view.View.measure(View.java:12911)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4805)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1399)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:676)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:557)
at android.view.View.measure(View.java:12911)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4805)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:297)
at android.view.View.measure(View.java:12911)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:828)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:557)
at android.view.View.measure(View.java:12911)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4805)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:297)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2097)
at android.view.View.measure(View.java:12911)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1064)
at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4448)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:823)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:590)
at dalvik.system.NativeStart.main(Native Method)

有什么提示吗?


你能详细说明一下“某些设备”是指哪些吗? - Voidpaw
@Voidpaw 谢谢你,但不幸的是我不知道用户在使用什么手机。这个错误只发生在那部手机上。 - Lisa Anne
1个回答

2

我刚调试了一个类似的情况,结果发现用于设置支持GridLayout的二维数组对我测试的所有2.3.x设备来说太大了。将最大行数减少后,StackOverflowError得到避免。希望这些信息能对你有所帮助!


你在哪里找到它的? - mr5
已确认。在rowCount=300时发生了错误,但在rowCount=150时没有发生。 - beetree
我在Android 4.4.4上遇到了同样的问题。将行大小减小到300。感谢您的答案。 - Ayaz Alifov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接