アプリを開発していますが、アプリを再起動してクラッシュ リカバリ機能を追加したいと考えています。これに関連するコードは書いていません。これに対する私の考えは、ステータスを監視するサービスを開始することです。このアプローチに基づく問題は、サービスがアプリから開始されるためです。アプリが停止するとサービスが停止します。アプリからサービスを開始し、それを個別に実行してアプリを監視し、再起動することはできますか?
2 に答える
あなたが説明した問題にアプローチするには、いくつかの方法があります。おそらく最も簡単なのは、プロジェクトにカスタムApplication
クラスを提供し、その onCreate() メソッドで呼び出しThread.setDefaultUncaughtExceptionHandler(this);
て、クラスをデフォルトの例外ハンドラとして割り当てることです。public void uncaughtException(Thread t, Throwable e)
これには、クラッシュ時に呼び出されるものをオーバーライドする必要があり、再起動をスケジュールできます。
プロセスの外部で何かを監視することが本当に必要な場合、1 つのアプローチは、独自のプロセスを持つように定義されたアプリケーション内のサービスです。これは AndroidManifest 属性で行われます。
もう 1 つのオプションは、システムによって処理され、アプリケーションを再起動できる Android AlarmManager を使用することです。
インテント フィルターを action に登録することで、電話の起動時にサービスを開始できますandroid.intent.action.BOOT_COMPLETED
。詳細については、こちらまたは同様の質問をご覧ください。