Obecnie mamy do DeadSystemException
czynienia z raportowaniem awarii w HockeyApp. Występuje w systemie Android 7.0 i Android 7.1. Nie mamy tego wyjątku w poprzedniej wersji naszej aplikacji (obecnie są one używane przez użytkowników), więc myślę, że ten wyjątek jest spowodowany pewną zmianą kodu. Ale ślad stosu nie jest w tym zbyt pomocny. Dowolny pomysł? Dzięki za wszelkie sugestie.
Śledzenie stosu z 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
The core Android system has died and is going through a runtime restart. All running apps will be promptly killed.
dzieje się to głównie gdzie indziej i wpływa na twoją aplikację?Odpowiedzi:
Dokumentacja programisty Androida dla
android.os.DeadSystemException
mówi, co następuje:Kod źródłowy nie pomaga znacznie więcej:
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(); } }
Ogólnie wygląda na to, że jest to generowane przez system operacyjny i nie ma to nic wspólnego z naszym kodem.
Spojrzenie na javadoc z superklasy
DeadObjectException
potwierdza tę teorię:źródło
Jedną z przyczyn był błąd w usłudze powiadomień Androida w wersji 7 i 8.
Było to spowodowane użyciem w powiadomieniach „wzorca wibracji”, który generuje plik
ArrayOutOfBoundsException
. Prowadzi to do awarii całego systemu i wysłania plikuDeadSystemException
.W celu uzyskania dalszych informacji można zwrócić się do tego medium artykule tutaj .
źródło
Fatal Exception: java.lang.RuntimeException: android.os.DeadSystemException
Ten wyjątek został spowodowany w jednej z aplikacji, które tworzyłem, występował głównie w urządzeniach MI.
Po debugowaniu stwierdziłem, że próbuję uruchomić inną usługę (Powiedz B) w bieżącej usłudze (Powiedz A) z wątku w tle, ale gdy
startService(itService)
wywołano metodę, usługa A została już zabita.Jedynym rozwiązaniem, które znalazłem do tej pory, jest sprawdzenie, czy bieżąca usługa A jest uruchomiona, czy nie, przed uruchomieniem innej usługi B. W zależności od implementacji możesz użyć jednego z różnych sposobów, aby sprawdzić, czy usługa działa z tej odpowiedzi .
źródło