[android] Android DeadSystemException

현재 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



답변

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

전반적으로 이것은 OS에 의해 던져지는 것처럼 보이며 우리 코드와 관련이 없습니다.

수퍼 클래스의 javadoc을 살펴보면 DeadObjectException이 이론이 뒷받침됩니다.

호스팅 프로세스가 더 이상 존재하지 않기 때문에 호출중인 개체가 종료되었습니다.


답변

한 가지 원인은 Android 버전 7 및 8의 알림 서비스의 버그였습니다.

알림에서 “진동 패턴”을 사용하여 발생했으며 ArrayOutOfBoundsException. 이로 인해 전체 시스템이 충돌하고 DeadSystemException.

자세한 내용은 여기 에서이 매체 기사를 참조 하십시오 .


답변

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

이 예외는 내가 개발중인 앱 중 하나에서 발생했으며 대부분 MI 장치에서 발생했습니다.

디버깅 후 백그라운드 스레드에서 현재 서비스 (Say A)의 다른 서비스 (Say B)를 시작하려고 시도했지만 startService(itService)메서드가 호출 되었을 때 서비스 A가 이미 종료되었음을 발견했습니다 .

지금까지 찾은 유일한 해결책은 다른 서비스 B를 시작하기 전에 현재 서비스 A가 실행 중인지 여부를 확인하는 것입니다. 구현에 따라 다양한 방법 중 하나를 사용 하여이 답변 에서 서비스가 실행 중인지 확인할 수 있습니다.


답변