タスク: Android アプリケーション全体の可視性を追跡し、バックグラウンドまたはフォアグラウンドになったときにイベントを生成する必要があります。タスクの最初の部分が完了しました。Activity onStart()でインクリメントし、Activity onStop()でデクリメントする特別なグローバル カウンターがあります。このカウンターがゼロになると、アプリケーションはバックグラウンドになります。
タスクの 2 番目の部分はトリッカーです。onResume()の奇妙な動作とonWindowFocusChanged(boolean)を使用するためのアドバイスについて知っています。onWindowFocusChanged(boolean)のドキュメントを調べたところ、次のようなことに気付きました。
ただし、原則として、再開されたアクティビティにはウィンドウ フォーカスがあります...入力フォーカスを取得する他のダイアログまたはポップアップが表示されていない限り、他のウィンドウにフォーカスがある場合、アクティビティ自体にはフォーカスがありません。同様に、システムはシステム レベルのウィンドウ (ステータス バー通知パネルやシステム アラートなど) を表示する場合があります。これらのウィンドウは、フォアグラウンド アクティビティを一時停止することなく、ウィンドウ入力フォーカスを一時的に取得します。
チェックアウトする方法はありますか: アプリから再開されたアクティビティの上に表示されるウィンドウはどれですか? それは私のダイアログですか、それともキーガードですか?イベントをキャッチする方法はありますか:再開されたアクティビティに対する私のウィンドウを除くすべてが削除されますか?