突然关闭app而不进行任何活动,抛出IllegalStateException onMeasure()

时间:2016-08-01 12:08:15

标签: java android illegalstateexception application-shutdown

我的应用始终以随机时间间隔关闭(大多数时间从几分钟到20分钟)。 "应用程序停止工作"消息框出现。最大的问题是,我没有在应用程序中做任何事情(比如与它进行交互),而且它本身就是随机关闭。这是logcat打印:

07-15 20:34:16.595 27361-27363/test.game D/dalvikvm: GC_CONCURRENT freed 141
9K, 44% free 13902K/24391K, paused 4ms+9ms, total 66ms
07-15 20:34:28.997 27361-27363/test.game D/dalvikvm: GC_CONCURRENT freed 1416K, 43% free 13903K/24391K, paused 3ms+7ms, total 56ms
07-15 20:34:29.418 27361-27361/test.game D/AndroidRuntime: Shutting down VM
07-15 20:34:29.418 27361-27361/test.game W/dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x412b52a0)
07-15 20:34:29.498 27361-27361/test.game E/AndroidRuntime: FATAL EXCEPTION: main java.lang.IllegalStateException: onMeasure() did not set the measured dimension by calling setMeasuredDimension()
at android.view.View.measure(View.java:15293)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399)
at android.view.View.measure(View.java:15288)
at android.widget.RelativeLayout.measureChildHorizontal(RelativeLayout.java:617)
at android.widget.RelativeLayout.onMeasure(RelativeLayout.java:399)
at android.view.View.measure(View.java:15288)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at android.view.View.measure(View.java:15288)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1396)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:681)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:574)
at android.view.View.measure(View.java:15288)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:4876)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:310)
at com.android.internal.policy.impl.PhoneWindow$DecorView.onMeasure(PhoneWindow.java:2397)
at android.view.View.measure(View.java:15288)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:1974)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:1217)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1390)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1113)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:4481)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
at android.view.Choreographer.doCallbacks(Choreographer.java:555)
at android.view.Choreographer.doFrame(Choreographer.java:525)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4867)
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:1007)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
at dalvik.system.NativeStart.main(Native Method)

有人会说,这是因为我在覆盖方法setMeasuredDimension()时没有写onMeasure()。另外,docs说你必须把这一行写成你的onMeasure,否则会抛出IllegalStateException(see it here)。

但我不会在整个项目的任何地方覆盖onMeasure,所以问题不在这里(在这种情况下至少不在我身边)。

很少有注意事项:

  • 这是完整的logcat日志,这些行中的任何一行(" 在android。 ...")都没有链接到我的代码,一切都转到来源 - 这意味着所有这些链接都是灰色的
  • 此异常总是只发生在我的S3 Mini(android 4.1.2)上,但从不发生在我的旧Galaxy Ace S5830i(android 2.3.6)上(是的,我测试了很多 - 在旧手机和应用仍然运行超过20小时!)。
  • 从未在模拟器中发生过
  • 没有"查看调整大小"在后台运行的操作,可能导致此异常

我想发布一些代码,但我完全不知道抛出这个异常的位置。

如果有人可以提供帮助,我真的非常感激。我此时已经迷失了......

1 个答案:

答案 0 :(得分:1)

由于没有代码,这只是随机猜测。您可以从查看已添加片段的活动开始。由于长时间不活动(以及系统的内存要求,我认为包含片段的活动在设备上已经被破坏了,我认为这是你在设备上找到错误的原因而不是另一个)。所以情况是片段可能指的是现在可能没有附加到窗口的视图。 (您也可以查找使用像viewPager等片段适配器的视图,如果您已经使用过它们。)