Android DeadSystemException

con*_*ull 60 android

目前,我们正在体验DeadSystemExceptionHockeyApp崩溃报告.它出现在Android 7.0和Android 7.1上.我们在以前的应用程序版本中没有遇到此异常(它们当前都被用户使用),所以我猜这个异常是由一些代码更改引起的.但堆栈跟踪并不是很有用.任何的想法?谢谢你的任何消化.

来自HockeyApp的堆栈跟踪:

java.lang.RuntimeException: android.os.DeadSystemException
at android.app.ActivityThread$StopInfo.run(ActivityThread.java:3781)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: android.os.DeadSystemException
... 8 more
Run Code Online (Sandbox Code Playgroud)

Ric*_*ier 57

Android开发人员的文档android.os.DeadSystemException说如下:

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

源代码没有太多帮助更多:

package android.os;
/**
 * The core Android system has died and is going through a runtime restart. All
 * running apps will be promptly killed.
 */
public class DeadSystemException extends DeadObjectException {
    public DeadSystemException() {
        super();
    }
}
Run Code Online (Sandbox Code Playgroud)

总的来说,操作系统似乎抛出了这个,与我们的代码无关.

看一下超类中的javadoc DeadObjectException,支持这个理论:

您呼叫的对象已经死亡,因为其托管过程不再存在.

  • 因此,我们唯一能做的就是忽略它? (8认同)
  • 这对于完美主义者来说是一场噩梦 (3认同)
  • 这是否意味着应用程序尝试在此异常期间执行某些操作,并且操作系统停止了它?我的应用程序可以采取什么措施来避免这种情况吗? (2认同)
  • 当通知管理器定义为 androidx 时,此错误为 5%。当定义为android%1时。这个错误肯定是由于我的通知管理器类造成的。但我还是没找到。 (2认同)
  • @Trk我发现它是在尝试显示通知时发生的。我怎样才能避免这次崩溃?试着抓? (2认同)
  • 是否至少有某种方法可以让 Crashlytics 停止对此发出警告?我一直把它当作一个新问题,尽管它仍然是一样的,只是发生在其他地方...... (2认同)

Van*_*aga 15

原因之一是Android 7和8版本的通知服务中的错误。

这是由于在通知中使用“振动模式”而引起的ArrayOutOfBoundsException。这导致整个系统崩溃并发布DeadSystemException

有关更多详细信息,请参阅此处的这篇中型文章。

  • 我不买。我在App Center中看到很多有关此异常的报告,而且都是Android 10,而不是Android 7或8。 (18认同)
  • 我同意 Justin 的观点,我发现运行 Android API 29 的设备会出现很多此类问题,而且我们没有在通知通道上使用振动选项。 (2认同)

Sha*_*anu 10

Fatal Exception: java.lang.RuntimeException: android.os.DeadSystemException
Run Code Online (Sandbox Code Playgroud)

此异常是在我正在开发的一个应用程序中引起的,它主要发生在MI设备中。

调试后,我发现我正在尝试从后台线程启动当前服务(说A)中的另一个服务(说B),但是当startService(itService)调用方法时,服务A已被杀死。

到目前为止,我发现的唯一解决方案是在启动另一个服务B之前检查当前服务A是否正在运行。根据您的实现,您可以使用多种方法之一从此答案中检查服务是否正在运行。