Activity.onCreate上的StackOverflowError

时间:2011-12-23 19:58:11

标签: android

我在两个不同的包上有两个同名的活动。一个只是另一个的子类。我这样做是为了使用两个不同的主题,具体取决于设备。 (我们对大屏幕设备使用Theme.Dialog,对其他设备使用常规。)继承的类只覆盖onCreate以调用其超级方法并设置一些窗口标记。

这在我的所有设备上都能很好地工作,但是我会在几次时收到非常奇怪的崩溃报告。

java.lang.StackOverflowError
    at *****.activities.Register.onCreate(SourceFile)
    at *****.tablet.Register.onCreateRegister(SourceFile)
    (a lot of repeats)
    at *****.activities.Register.onCreate(SourceFile)
    at *****.tablet.Register.onCreateRegister(SourceFile)
    at *****.activities.Register.onCreate(SourceFile)
    at *****.tablet.Register.onCreateRegister(SourceFile)
    at *****.tablet.Register.onCreate(SourceFile)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
    at android.app.ActivityThread.access$1500(ActivityThread.java:117)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:130)
    at android.app.ActivityThread.main(ActivityThread.java:3683)
    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:850)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608)
    at dalvik.system.NativeStart.main(Native Method)

我没有创建onCreateRegister所以我认为这是一个内部名称,但我不确定。我使用的是ProGuard,但如果递归调用是我的代码,则应显示行号。

我无法在我的任何设备中复制它,我甚至从我已经测试的相同模型获得此报告,因此它可能不是设备特定的问题。

有没有人知道为什么会这样,或者有更好的方法来解决这个问题?

2 个答案:

答案 0 :(得分:0)

的StackOverflowError:

  

当正在运行的程序的堆栈深度超过某些深度时抛出   平台或VM特定限制。通常,这只会在a时发生   程序变得无限递归,但它也可以发生在   正确编写(但深度递归)程序。

不知道在哪里告诉你这些信息,因为我还没有看到你的代码。但这可能是一个Android / Java错误,可能不是你的错,或者你可能有一些递归无法正常执行的东西。

答案 1 :(得分:0)

我重命名了我的类,所以父类和子类不再是同一个名字了,它似乎解决了这个问题。