Подтвердить что ты не робот

Android DeadSystemException

В настоящее время мы испытываем DeadSystemException в наших отчетах о сбоях в HockeyApp. Это происходит на 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
4b9b3361

Ответ 1

Документация разработчика 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();
    }
}

В целом, похоже, что это бросает ОС и не имеет никакого отношения к нашему коду.

Глядя на javadoc из суперкласса, DeadObjectException, поддерживает эту теорию вверх:

Объект, который вы вызываете, умер, потому что его хостинг-процесс не дольше.

Ответ 2

Fatal Exception: java.lang.RuntimeException: android.os.DeadSystemException

Это исключение было вызвано в одном из приложений, которые я разрабатывал, это происходило в основном на устройствах MI.

После отладки я обнаружил, что пытался запустить другую службу (Say B) в текущей службе (Say A) из фонового потока, но когда был вызван метод startService(itService), служба A уже была убита.

Единственное решение, которое я нашел до сих пор, - проверить, работает ли текущая служба A или нет, прежде чем запускать другую службу B. В зависимости от вашей реализации вы можете использовать один из способов проверки работы служб с этот ответ.

Ответ 3

Одной из причин была ошибка в службе уведомлений Android версии 7 и 8.

Это было вызвано использованием "шаблона вибрации" в уведомлениях, который вызывает ArrayOutOfBoundsException. Это приводит к краху всей системы и публикации DeadSystemException.

Для получения дополнительной информации вы можете обратиться к этой средней статье здесь.