webdevqa.jp.net

DeadSystemExceptionサービス開始Android 7

過去数週間、クラッシュレポーターを使用しています。

Fatal Exception: Java.lang.RuntimeException: Unable to start service com.####[email protected] 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)

このクラッシュは次の場所にあります。

  • すべてのSamsungデバイス7.0

  • 7.1.2のすべてのNexusデバイス

注意:

  • これは、アプリケーションの最近の更新によるものではなく、これらの電話のOSの更新によるものです。

  • これは非常に頻繁なクラッシュです(これまでで最大のクラッシュです)。

  • ユーザーは以前よりもクラッシュを報告しません(このクラッシュは実際にユーザーに表示されますか?)

  • 私たちの側でそれを再現することはできません

  • スタックトレースを見るとわかるように、影響を受けるコードはシステムのみです。問題を見つけて処理するために、自分の側からできることはあまりありません。

スレッドをチェックしました Android DeadSystemException ですが、あまり役に立ちません。

DeadSystemExceptionは次のとおりです。

コアAndroidシステムが停止し、ランタイムの再起動が実行されています。実行中のすべてのアプリがすぐに強制終了されます。

「それはシステムだ、何もできない」と言う以外にできることはありますか?

9
stankocken

デバイスの再起動中は、アプリを実行できません。デバイスの再起動時には、自分だけでなく特定のアプリを実行することはできません。システムがクラッシュしたときに何かをしようとすると発生します。システムがクラッシュし、再起動時にアプリがサービスを開始するか、何かを実行すると、そのエラーが発生することを意味します。

つまり、例外はアプリに接続されていませんが、Android OSであり、それについてできることは何もありません。

サービスの開始に関連するクラッシュは、システムがクラッシュしたときにアプリが行ったことであるためです。

So:エラーは、システムが実行時の再起動を行ったときにアプリが何かを行ったためにシステムがスローしたものです。アプリからAndroid OSを制御することはできないため、これについてできることは何もありません。

11

私は同じ問題を抱えています。 Android SensorServiceを使用するサービスを実装しました。ある時点で2つのことが起こりましたが、どちらがもう一方を引き起こしたのかまだわかりません。1)ランタイムが再起動しました2) Android SensorServiceが停止しました。アプリで他の処理をデバッグしていたため、デフォルトの未処理の例外ハンドラーを実装しました。このようなハンドラーが少なくとも時々その例外をキャッチしていることに気付きました。

私はそれを実装するためにこのチュートリアルに従いました https://doandroid.wordpress.com/2011/11/19/writing-crash-reports-into-device-sd-card/

したがって、このハンドラーを実装し、システムが停止したときに実際に呼び出されると仮定すると、ハンドラー内に何らかの検証を追加して、例外がDeadSystemExceptionの場合に、アプリケーションを再起動するアラームを設定できます。たとえば、5分か何か。

もちろん、これは理想的な解決策ではありませんが、システムで実際に何が起こっているのかを理解するまでは、少なくとも問題の回避策になる可能性があります。

プログラムでアプリを再起動する方法に関する情報: 最初のアクティビティでアプリケーションを強制的に再起動する

1
Roger

Android OSシステムが停止したため、アプリがクラッシュしました。参照は次のとおりです。 https://developer.Android.com/reference/Android/os/DeadSystemException コアAndroidシステムが停止し、ランタイムの再起動が行われています。実行中のすべてのアプリがすぐに強制終了されます。

0
Ramesh Yankati