为什么在Android android.text.TextUtils.getChars中发生StackOverflowError?

Ars*_*war 4 java android

在我的应用程序中,此错误多次发生。如何避免这种情况?

我找到了一些答案,说这是由于使用了多层。但是不清楚多层的概念。

0   java.lang.StackOverflowError
1   at android.text.TextUtils.getChars(TextUtils.java:70)
2   at android.graphics.Canvas.drawText(Canvas.java:1328)
3   at android.text.Layout.draw(Layout.java:651)
4   at android.widget.TextView.onDraw(TextView.java:4328)
5   at android.view.View.draw(View.java:6985)
6   at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
7   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
8   at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
9   at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
10  at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
11  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
12  at android.view.View.draw(View.java:6988)
13  at android.view.View.buildDrawingCache(View.java:6710)
14  at android.view.View.getDrawingCache(View.java:6490)
15  at android.view.ViewGroup.drawChild(ViewGroup.java:1657)
16  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
17  at android.widget.AbsListView.dispatchDraw(AbsListView.java:1499)
18  at android.widget.ListView.dispatchDraw(ListView.java:3194)
19  at android.view.View.draw(View.java:6988)
20  at android.widget.AbsListView.draw(AbsListView.java:2607)
21  at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
22  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
23  at android.view.View.draw(View.java:6988)
24  at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
25  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
26  at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
27  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
28  at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
29  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
30  at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
31  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
32  at android.view.View.draw(View.java:6988)
33  at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
34  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
35  at android.view.View.draw(View.java:6988)
36  at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
37  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
38  at android.view.View.draw(View.java:6988)
39  at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
40  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
41  at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
42  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
43  at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
44  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
45  at android.view.View.draw(View.java:6988)
46  at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
47  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
48  at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
49  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
50  at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
51  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
52  at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
53  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
54  at android.view.View.draw(View.java:6988)
55  at android.view.ViewGroup.drawChild(ViewGroup.java:1732)
56  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
57  at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
58  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
59  at android.view.ViewGroup.drawChild(ViewGroup.java:1730)
60  at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459)
61  at android.view.View.draw(View.java:6988)
62  at android.widget.FrameLayout.draw(FrameLayout.java:357)
63  at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:1961)
64  at android.view.ViewRoot.draw(ViewRoot.java:1602)
65  at android.view.ViewRoot.performTraversals(ViewRoot.java:1323)
66  at android.view.ViewRoot.handleMessage(ViewRoot.java:1961)
67  at android.os.Handler.dispatchMessage(Handler.java:99)
68  at android.os.Looper.loop(Looper.java:150)
69  at android.app.ActivityThread.main(ActivityThread.java:4293)
70  at java.lang.reflect.Method.invokeNative(Native Method)
71  at java.lang.reflect.Method.invoke(Method.java:507)
72  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
73  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
74  at dalvik.system.NativeStart.main(Native Method) 
Run Code Online (Sandbox Code Playgroud)

Chr*_*ung 5

从堆栈跟踪来看,您似乎具有非常深的窗口小部件嵌套结构!那是栈溢出的原因,而不是getChars。如果可以的话,请考虑简化窗口小部件树,这样窗口小部件就不会嵌套得太深。