Android DeadSystemException

83

Derzeit haben wir DeadSystemExceptionin unserer HockeyApp einen Absturzbericht. Es tritt unter Android 7.0 und Android 7.1 auf. Diese Ausnahme tritt in der vorherigen Version unserer Anwendung nicht auf (beide werden derzeit von Benutzern verwendet). Ich denke, diese Ausnahme wird durch einige Codeänderungen verursacht. Die Stapelverfolgung ist hierfür jedoch nicht sehr hilfreich. Irgendeine Idee? Vielen Dank für alle Vorschläge.

Stapelspur von 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
konvexer Rumpf
quelle
1
Bitte geben Sie den Code ein und geben Sie die Codezeile an, in der eine Ausnahme auftritt.
Aishwarya Tiwari
4
Ich würde sagen, es ist nicht das Problem Ihrer App, wie in den Dokumenten: The core Android system has died and is going through a runtime restart. All running apps will be promptly killed.Dies geschieht meistens woanders und wirkt sich auf Ihre App aus?
Yazan
2
@AishwaryaTiwari Ich kann den Fehler nicht lokal reproduzieren - daher kann ich keinen Code veröffentlichen. Alles was ich habe ist der Stack Trace von HockeyApp
ConvexHull
1
Es ist eine Ausnahme, die vom Android Framework ausgelöst wird. Es tut mir leid, dass ich Ihnen dabei nicht helfen kann.
Aishwarya Tiwari
1
Ich bin gespannt, ob jemand den Absturz reproduzieren konnte. Die Repro-Schritte werden mit dem Kopfgeld ausgezeichnet
David Rawson

Antworten:

70

In den Android Developer-Dokumenten android.os.DeadSystemExceptionheißt es:

Das Android-Kernsystem ist gestorben und wird zur Laufzeit neu gestartet. Alle laufenden Apps werden umgehend beendet.

Der Quellcode hilft nicht viel mehr:

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();
    }
}

Insgesamt sieht es so aus, als würde dies vom Betriebssystem ausgelöst und hat nichts mit unserem Code zu tun.

Ein Blick auf den Javadoc aus der Oberklasse DeadObjectExceptionstützt diese Theorie:

Das von Ihnen aufgerufene Objekt ist gestorben, da der Hosting-Prozess nicht mehr vorhanden ist.

Richard Le Mesurier
quelle
Bedeutet dies, dass die App während dieser Ausnahme versucht hat, etwas zu tun, und das Betriebssystem sie gestoppt hat? Kann meine App etwas tun, um dies zu vermeiden?
Android-Entwickler
Soweit ich weiß, können wir dies nicht über die App beheben.
Richard Le Mesurier
14
Das einzige, was wir tun können, ist es einfach zu ignorieren?
Android-Entwickler
2
Dieser Fehler beträgt 5%, wenn Notification Manager als androidx definiert ist. Wenn definiert als Android% 1 ist. Dieser Fehler ist definitiv auf die Notification Manager-Klasse für mich zurückzuführen. Aber ich habe es immer noch nicht gefunden.
Trk
1
@Trk Ich habe festgestellt, dass es passiert ist, als ich versucht habe, eine Benachrichtigung anzuzeigen. Wie kann ich diesen Absturz vermeiden? versuchen zu fangen?
EricZhao
27

Eine Ursache war ein Fehler im Benachrichtigungsdienst von Android Version 7 und 8.

Es wurde durch die Verwendung von "Vibrationsmuster" in den Benachrichtigungen verursacht, die eine ArrayOutOfBoundsException. Dies führt dazu, dass das gesamte System abstürzt und a DeadSystemException.

Weitere Informationen finden Sie in diesem Medium-Artikel hier .

Vanshaj Daga
quelle
Lockout-Berichterstattung bestätigt Sie
Trk
13
Ich kaufe es nicht. Ich sehe viele Berichte über diese Ausnahme im App Center, und alle sind mit Android 10, nicht mit Android 7 oder 8.
Justin
Ich stimme Justin zu, ich sehe viele dieser Probleme bei Geräten mit Android API 29, und wir verwenden die Vibrationsoption nicht für die Benachrichtigungskanäle.
Hrafn
16
Fatal Exception: java.lang.RuntimeException: android.os.DeadSystemException

Diese Ausnahme wurde in einer der von mir entwickelten Apps verursacht. Sie trat hauptsächlich bei MI-Geräten auf.

Nach dem Debuggen stellte ich fest, dass ich versuchte, einen anderen Dienst (Say B) im aktuellen Dienst (Say A) über einen Hintergrundthread zu starten, aber als die startService(itService)Methode aufgerufen wurde, wurde der Dienst A bereits beendet.

Die einzige Lösung, die ich bisher gefunden habe, besteht darin, zu überprüfen, ob der aktuelle Dienst A ausgeführt wird oder nicht, bevor Sie einen anderen Dienst B starten. Abhängig von Ihrer Implementierung können Sie anhand dieser Antwort auf verschiedene Arten überprüfen, ob ein Dienst ausgeführt wird .

Shantanu
quelle