Android DeadSystemException

时间:2017-03-14 11:27:04

标签: android

目前,我们在HockeyApp崩溃报告中遇到DeadSystemException。它出现在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

4 个答案:

答案 0 :(得分:51)

Google Mobile Ads Unity plugin的Android开发人员文档说明如下:

  

核心Android系统已经死亡,正在经历运行时   重新开始。所有正在运行的应用程序都会被迅速杀死。

android.os.DeadSystemException无济于事:

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

总的来说,操作系统似乎抛出了这个问题,与我们的代码无关。

从超类DeadObjectException看看javadoc,支持这个理论:

  

您呼叫的对象已经死亡,因为它的托管过程没有   存在的时间越长。

答案 1 :(得分:10)

        var winSize = document.getElementById("size");
        var mouseCoords = document.getElementById("coords");

        window.addEventListener("click", getCoords);

        function getCoords(e)
        {   
            var windowWidth = window.innerWidth;
            var windowHeight = window.innerHeight;
            winSize.innerHTML = windowWidth + ":" + windowHeight;

            var xPosition = e.clientX;
            var yPosition = e.clientY;
            mouseCoords.innerHTML = xPosition + ":" + yPosition;
        }

此异常是由我正在开发的其中一个应用程序引起的,主要发生在MI设备中。

调试后我发现我正在尝试从后台线程启动当前服务(Say A)中的另一个服务(Say B),但是当调用Fatal Exception: java.lang.RuntimeException: android.os.DeadSystemException 方法时,服务A已经被杀死。 / p>

我发现的唯一解决方案是在启动另一个服务B之前检查当前服务A是否正在运行。根据您的实现,您可以使用各种方法之一来检查服务是否正在运行{ {3}}

答案 2 :(得分:6)

一个原因是Android 7和8版本的通知服务中存在错误。

这是由于在通知中使用“振动模式”引起的,并引发了ArrayOutOfBoundsException。这会导致整个系统崩溃并发布DeadSystemException

有关更多详细信息,请参阅此中型文章here

答案 3 :(得分:0)

另一个例子:

try {
     ActivityManager.getMyMemoryState(mAppProcessInfo);
} catch (Exception exception) {
     exception.printStackTrace();
     return;
}