私の状況:
アプリの起動時に開始される Android サービスを作成しました。このサービスは、5 秒間待機し、ログ メッセージを書き込み、再度待機する単純なスレッドで構成されます。
(戻るボタンを使用して) アプリケーションを閉じた後、OnStartCommand で START_STICKY を返しているため、Android はサービスを再起動することを選択します。アプリケーションをデバッグするとき、実際に DDMS を使用してプロセスを強制終了できます。Android は再びサービスの再起動を選択します。これは、マニュアルによると予想されます。
タスクマネージャーもインストールし、それを使用してインスタンスを「強制終了」しました。ファンキーなことは、私のサービスが再起動されなくなったことです。
ファンキーな点は次のとおりです。どちらの場合も、クラスの破棄コードは呼び出されません。待機中のスレッドで InterruptedException が発生しません。私のアプリケーションが破棄されていることを知る方法はないようです。
私の質問:
どうすればこれを回避し、キル リクエストに応答できますか? DVM には、適切なシグナル処理のための sun.misc.Signal と sun.misc.SignalHandler がないことに気付きました (タスク キラーによって使用されている場合でも)。
ファイル ハンドル、データベース接続などを適切に閉じることができるように、アプリが破棄されているかどうかを知る必要があります。
ご協力いただきありがとうございます。