Android DeadSystemException

83

Actualmente, estamos experimentando un DeadSystemExceptionerror en nuestro informe de fallas de HockeyApp. Ocurre en Android 7.0 y Android 7.1. No experimentamos esta excepción en la versión anterior de nuestra aplicación (actualmente los usuarios las usan), así que supongo que esta excepción se debe a algún cambio de código. Pero el seguimiento de la pila no es muy útil para esto. ¿Alguna idea? Gracias por cualquier sugerencia.

Seguimiento de pila de 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
convexo
fuente
1
Publique el código y mencione la línea de código donde ocurre la excepción.
Aishwarya Tiwari
4
Yo diría que no es problema de su aplicación, como en los documentos: ¿ The core Android system has died and is going through a runtime restart. All running apps will be promptly killed.esto ocurre principalmente en otro lugar y afecta su aplicación?
Yazan
2
@AishwaryaTiwari No puedo reproducir el error localmente, por lo que no puedo publicar ningún fragmento de código. Todo lo que tengo es el seguimiento de la pila de HockeyApp
convexHull
1
Es una excepción lanzada por Android Framework, lamento no poder ayudarte con esto.
Aishwarya Tiwari
1
Estoy interesado en ver si alguien ha podido reproducir el accidente. Los pasos de repro recibirán la recompensa
David Rawson

Respuestas:

70

Los documentos para desarrolladores de Android android.os.DeadSystemExceptiondicen lo siguiente:

El sistema central de Android ha muerto y se está reiniciando en tiempo de ejecución. Todas las aplicaciones en ejecución se eliminarán de inmediato.

El código fuente no ayuda mucho más:

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

En general, parece que esto lo está lanzando el sistema operativo y no tiene nada que ver con nuestro código.

Mirando el javadoc de la superclase DeadObjectException, respalda esta teoría:

El objeto al que está llamando ha muerto porque su proceso de alojamiento ya no existe.

Richard Le Mesurier
fuente
¿Significa que la aplicación intentó hacer algo durante esta excepción y el sistema operativo la detuvo? ¿Hay algo que mi aplicación pueda hacer para evitarlo?
desarrollador de Android
Según tengo entendido, esto no es algo que podamos solucionar desde la aplicación.
Richard Le Mesurier
14
Entonces, ¿lo único que podemos hacer es ignorarlo?
desarrollador de Android
2
Este error es del 5% cuando el Administrador de notificaciones se define como androidx. Cuando se define como android% 1 es. Este error definitivamente se debe a la clase de Notification Manager para mí. Pero todavía no lo he encontrado.
Trk
1
@Trk Descubrí que sucedió al intentar mostrar la Notificación. ¿Cómo puedo evitar este accidente? ¿trata de atraparlo?
EricZhao
27

Una de las causas fue un error en el servicio de notificación de las versiones 7 y 8 de Android.

Fue causado por el uso de "patrón de vibración" en las notificaciones, que arroja un ArrayOutOfBoundsException. Esto hace que todo el sistema se bloquee y publique un archivo DeadSystemException.

Para obtener más detalles, puede consultar este artículo de Medium aquí .

Vanshaj Daga
fuente
Los informes de bloqueo lo confirman
Trk
13
Yo no lo compro. Veo muchos informes de esta excepción en App Center, y todos son con Android 10, no con Android 7 u 8.
Justin
Estoy de acuerdo con Justin, veo que muchos de estos problemas surgen con dispositivos que ejecutan Android API 29, y no estamos usando la opción de vibración en los canales de notificación.
Hrafn
16
Fatal Exception: java.lang.RuntimeException: android.os.DeadSystemException

Esta excepción se produjo en una de las aplicaciones que estaba desarrollando, se produjo principalmente en dispositivos MI.

Después de la depuración, descubrí que estaba intentando iniciar otro servicio (Diga B) en el servicio actual (Diga A) desde un hilo en segundo plano, pero cuando startService(itService)se llamó al método, el servicio A ya se había eliminado.

La única solución que encontré hasta ahora es verificar si el servicio actual A se está ejecutando o no antes de iniciar otro servicio B. Dependiendo de su implementación, puede usar una de las diversas formas de verificar si un servicio se está ejecutando desde esta respuesta .

Shantanu
fuente