在过去的几周中,我有崩溃记者:
Fatal Exception: java.lang.RuntimeException: Unable to start service com.####.MyService@ef705d8 with Intent { act=HIDE cmp=com.####/.MyService (has extras) }: java.lang.RuntimeException: android.os.DeadSystemException
at android.app.ActivityThread.handleServiceArgs(ActivityThread.java:3344)
at android.app.ActivityThread.-wrap21(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1583)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6121)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
此崩溃存在于:
上所有三星设备7.0
7.1.2
上的所有Nexus设备
注意:
这不是由于我们的应用程序的最新更新,而只是对这些电话的OS更新。
这是一个非常非常频繁的崩溃(到目前为止,我们最大(。
我们的用户没有报告崩溃(用户实际上可见此崩溃吗?(
我们无法在我们的侧面重现
正如您在堆栈跟踪中看到的那样,影响的代码仅是系统。我可以从我身边做很多事情来尝试抓住和处理这个问题。
我检查了Android DeadSystemexception的线程,但这对我没有太大帮助。
我知道DeadSystemException
是:
核心Android系统已经死亡,正在进行运行时重新启动。所有运行的应用程序将立即被杀死。
除了说"那是系统,我们无能为力",我们可以做什么?
重新启动设备时,您无法运行应用程序。任何应用程序,不仅是您的应用程序,而且当设备重新启动时,任何给定的应用程序都无法运行。当您尝试在系统崩溃时尝试做某事时,会发生Afaik。这意味着如果系统崩溃并在重新启动时,您的应用程序启动了一项服务或执行某些操作,则会遇到该错误。
这意味着例外没有连接到您的应用程序,但是Android OS,您无能为力。
与启动服务有关的崩溃是因为这是您的应用程序崩溃时所做的。
so:错误是系统投掷的东西,因为您的应用程序在系统重新启动时做了某件事。您无能为力,因为您无法从应用程序中控制Android OS。
我遇到了同样的问题。我实施了使用Android传感器服务的服务。在某个时候,发生了两件事,但我仍然不知道哪一个造成了另一个。1(运行时重新启动2(Android Sensorserservice死亡。我已经实现了一个默认的未经手法处理程序,因为我在应用程序上调试了其他一些内容。我注意到这样的处理程序,至少有时会遇到这种例外。
我遵循本教程进行实施https://doandroid.wordpress.com/2011/11/19/writing-crash-reports-into-device-sd-card/
因此,假设您实现此处理程序,并且在系统死亡时实际上被称为,您可以在处理程序内添加某种验证,以便如果异常是DeadSystemexception,则可以设置一个警报来重新启动您的警报在说,5分钟之类的东西中应用。
这当然不是理想的解决方案,但是至少在您弄清楚系统到底发生了什么之前,至少可能是解决问题的方法。
有关如何通过编程应用程序重新启动应用的一些信息:强制应用第一次活动
您的应用程序由于Android OS系统而崩溃。这是参考。https://developer.android.com/reference/android/os/deadsystemexception核心Android系统已经死亡,并且正在通过运行时重新启动。所有运行的应用程序将立即被杀死。