2012-03-16 112 views
4

StackOverflowError有问题。 现在最糟糕的情况是它只发生在一台设备上。 我测试迄今在:Android - stackoverflow错误

三星Galaxy SII(2.3.4)

三星Nexus S(4.0.3)

HTC野火(2.3.7和2.2)

三星Galaxy Tab 10.1(3.2)

...一切都很好。 但是当我发送应用客户和他测试了HTC假日2.3.4的崩溃与此 错误:

java.lang.StackOverflowError 
at android.widget.TextView.onDraw(TextView.java:4329) 
at android.view.View.draw(View.java:6993) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1730) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:7105) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at android.widget.ScrollView.draw(ScrollView.java:1417) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1730) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1730) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1730) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1730) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1730) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1730) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1730) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at android.view.ViewGroup.drawChild(ViewGroup.java:1732) 
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:1459) 
at android.view.View.draw(View.java:6996) 
at android.widget.FrameLayout.draw(FrameLayout.java:357) 
at com.android.internal.policy.impl.PhoneWindow$DecorView.draw(PhoneWindow.java:2054) 
at android.view.ViewRoot.draw(ViewRoot.java:1632) 
at android.view.ViewRoot.performTraversals(ViewRoot.java:1335) 
at android.view.ViewRoot.handleMessage(ViewRoot.java:1991) 
at android.os.Handler.dispatchMessage(Handler.java:99) 
at android.os.Looper.loop(Looper.java:150) 
at android.app.ActivityThread.main(ActivityThread.java:4358) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 
at dalvik.system.NativeStart.main(Native Method) 

有任何可能性,我不知道,增加内存等 应用是复杂的,一切都在TabWidget上作为基本的活动。 错误发生在一个活动,我instand使用listView我使用 scrollview动态添加视图。

更多细节:

1)的地方,我有错误是TabWidget,这里面有另一个 TabWidget与两个目的。

有什么更好?将TabWidget与TabWidget一起放在里面,或者只有一个 TabWidget和带有假tabbuttons的意图以及setContentView(...)的内容。

2)第一个意图我有两个ScrollViews,第一个我动态地添加视图与用户图片和相同的数据。当您点击该用户时,会出现第二个ScrollView的动画,该动画也会被更详细的用户数据动态填充。所有视图都来自xml文件。

我没有发生这个错误,当我使用ListView,没有动画和显示详细的视图,我只是通过setContentView方法更改内容视图。我应该回到这种方法吗? 感谢您的帮助。

3)为什么这个错误只发生在一个设备上?不幸的是,这是在美国的客户端设备,我在英国,所以我没有可能重现错误。

+2

提供更多信息。 – 2012-03-16 12:36:16

+0

@goodm你有没有找到解决办法? – 2012-10-16 20:02:57

+0

@parag不幸的是我没有,我已经回到之前的工作设置。 – goodm 2012-10-17 07:36:24

回答

3

StackOverflowError通常发生在递归调用太多的情况下,所以我建议您检查每个会非常小心地调用自己的方法,特别是会导致它们自称为不合理次数(几千次)的条件, ,或导致无退出情况(无限递归)。

如需更详细的帮助,请发布错误日志和其他信息。

+0

我添加了更多细节。 – goodm 2012-03-16 12:48:40

+0

看起来你有一个超嵌套的布局,即使没有内存问题,我猜测性能不是太好。最好先删除一些布局,看看是否能够解决问题,如果是的话,然后优化你的布局以减少嵌套。对于一些提示,你可以从这里开始:http://developer.android.com/resources/articles/layout-tricks-merge.html – Kai 2012-03-16 13:55:52

+0

不幸的是,我不能重现错误。它只在客户现场进行测试。如果我能够重现这种错误,这可以帮助我更多。 – goodm 2012-03-20 16:27:12

0

避免在选中页面的页面调用任何服务或方法,因为此方法被递归调用多次并最终导致stackoverflow错误。