DeadSystemException启动服务Android 7

时间:2017-06-07 09:05:42

标签: android crash android-7.0-nougat

过去几周,我遇到了我的车祸记者:

Fatal Exception: java.lang.RuntimeException: Unable to start service com.####.MyService@ef705d8 with Intent { act=HIDE cmp=com.####/.MyService (has extras) }: java.lang.RuntimeException: android.os.DeadSystemException
       at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3344)
       at android.app.ActivityThread.-wrap21(ActivityThread.java)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1583)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:154)
       at android.app.ActivityThread.main(ActivityThread.java:6121)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)

这次崩溃发生在:

  • 所有三星设备7.0

  • 7.1.2

  • 上的所有Nexus设备

注意:

  • 这不是因为最近我们的应用程序更新,只是这些手机上的操作系统更新。

  • 这是一次非常频繁的崩溃(到目前为止我们最大的崩溃)。

  • 我们的用户不会报告崩溃事件(此崩溃实际上对用户是否可见?)

  • 我们无法在我们身边重现

  • 正如您可以看到堆栈跟踪,受影响的代码仅限系统。我不能在我身边试图抓住并处理这个问题。

我检查了帖子Android DeadSystemException,但这对我没什么帮助。

我知道DeadSystemException是:

  

核心Android系统已经死亡并且正在重启运行时。所有正在运行的应用程序都会被迅速杀死。

我们能做什么,只能说“那是系统,我们什么都做不了”?

3 个答案:

答案 0 :(得分:8)

重启设备时,无法运行应用。任何应用程序,不仅仅是您的,但任何给定的应用程序无法在设备重新启动时运行。当您尝试在系统崩溃时执行某些操作时,会发生AFAIK。这意味着,如果系统崩溃并且重新启动应用程序,则启动服务或执行某些操作即可获得该错误。

意味着异常没有连接到您的应用程序,但是Android操作系统并没有什么可以解决的。

与启动服务相关的崩溃是因为这是您的应用在系统崩溃时所执行的操作。

所以:该错误是系统投掷的,因为您的应用在系统执行运行时重启时执行了某些操作。由于无法从应用程序控制Android操作系统,因此无法对此进行任何操作。

答案 1 :(得分:1)

我遇到了同样的问题。我实现了一个使用android SensorService的服务。在某些时候,发生了两件事,但我仍然不知道哪一件引起了另一件事。 1)运行时重新启动2)android SensorService死了。我已经实现了一个默认的未处理异常处理程序,因为我正在调试我的应用程序上的其他一些东西我注意到这样的处理程序,至少有时会捕获该异常。

我按照本教程实施https://doandroid.wordpress.com/2011/11/19/writing-crash-reports-into-device-sd-card/

因此,假设您实现此处理程序并且实际上在系统死亡时调用它,您可以在处理程序中添加某种验证,以便如果异常是DeadSystemException,则可以设置警报以重新启动申请,比方说,5分钟或者其他什么。

这当然不是一个理想的解决方案,但在您弄清楚系统的实际情况之前,至少可能会解决您的问题。

有关如何以编程方式重新启动应用的一些信息: Force application to restart on first activity

答案 2 :(得分:0)

您的应用因Android OS系统死亡而崩溃。 这是参考。 https://developer.android.com/reference/android/os/DeadSystemException 核心Android系统已死,正在通过运行时重新启动。所有正在运行的应用程序将被立即杀死。