5

ステータスバーのアイコンの状態を少し制御しようとしています。私は次のことができるようにしたい:

  1. アプリが実行されている限り、ユーザーがステータスバーをクリアすることを選択した場合でも、アイコンをステータスバーに表示したままにします。
  2. アプリが終了した場合、(特に) 強制終了された場合でも、ステータス バーからアイコンをクリアしますか? アプリが明示的に終了したときに削除できることはわかっていますが、アプリが強制終了された場合は確実に削除したいと考えています。私はまだこれを試していないことを認めなければなりません。

これを行っているように見えるアプリを見たことがありますが、これに関する良い情報を得ることができませんでした.

4

2 に答える 2

4

1)ステータスバーの通知に関する開発者向けドキュメントページをご覧ください。また、 FLAG_NO_CLEAR定数を確認する必要があることにも注意してください。これにより、条件がカバーされます。

2)アプリが強制終了された場合、アイコンを保持することは必ずしも悪いことではなく、アプリの目的によって多少異なります。特に、アプリがバックグラウンドに移行してから強制終了された場合、アイコンを残すことは、Googleのエンジニアの1人によって予想される動作であることが実際に指摘されています

正解です。onDestroy()は、強制終了されたときに呼び出されません。これはアクティビティと同じです。カーネルは、アプリを待たずに、必要に応じてプロセスを強制終了します。

ステータスバーはアイコンを正しく保持しています。サービスは後で再開されます。停止していません。

バックグラウンドサービスが定期的に停止されるのは正常です。通常、バックグラウンドサービスはユーザーが直接認識しているものではないため、これは意図的なものであり、プロセスを時々再起動することで、RAMの消費量が増えるようなサービスの問題を回避できます。

サービスがユーザーが実際に認識しているもの(音楽の再生など)である場合は、Service.startForeground()を検討してください。

そうは言っても、アイコンはおそらくとにかく消えるはずです。永続的なアイコンを持つ他のアプリ(Meeboが頭に浮かぶ)は、タスクマネージャーでそれらを殺すとクリアされます。ただし、これがすべての場合に発生するかどうかはわかりません。OOMによってバックグラウンドでアプリが強制終了された場合、とにかくアプリをクリアしたくない可能性があります。

于 2010-09-14T21:04:46.460 に答える
2
  1. http://developer.android.com/reference/android/app/Notification.html#FLAG_NO_CLEAR
  2. アイコンは自動的に削除されます(少なくとも、携帯電話のアプリを強制的に強制終了した場合)。
于 2010-09-14T21:04:48.703 に答える