0

私の状況:
アプリの起動時に開始される Android サービスを作成しました。このサービスは、5 秒間待機し、ログ メッセージを書き込み、再度待機する単純なスレッドで構成されます。

(戻るボタンを使用して) アプリケーションを閉じた後、OnStartCommand で START_STICKY を返しているため、Android はサービスを再起動することを選択します。アプリケーションをデバッグするとき、実際に DDMS を使用してプロセスを強制終了できます。Android は再びサービスの再起動を選択します。これは、マニュアルによると予想されます。

タスクマネージャーもインストールし、それを使用してインスタンスを「強制終了」しました。ファンキーなことは、私のサービスが再起動されなくなったことです。

ファンキーな点は次のとおりです。どちらの場合も、クラスの破棄コードは呼び出されません。待機中のスレッドで InterruptedException が発生しません。私のアプリケーションが破棄されていることを知る方法はないようです。

私の質問:
どうすればこれを回避し、キル リクエストに応答できますか? DVM には、適切なシグナル処理のための sun.misc.Signal と sun.misc.SignalHandler がないことに気付きました (タスク キラーによって使用されている場合でも)。

ファイル ハンドル、データベース接続などを適切に閉じることができるように、アプリが破棄されているかどうかを知る必要があります。

ご協力いただきありがとうございます。

4

1 に答える 1

0

どうすればこれを回避し、kill リクエストに応答できますか?

あなたはそうしない。OTOH、このタスク キラーの動作は Android 2.2 で削除されているはずなので、最終的には問題になりません。

于 2011-05-25T15:52:11.927 に答える