アプリケーションがフォアグラウンドにあるかどうかを検出する理由はたくさんあります。たとえば、GCM/C2DM プッシュ通知のトリガーとして、多くのアプリには、アプリがフォアグラウンドとバックグラウンドの場合に異なる動作を実装する正当な理由があります。他の理由としては、たとえばバックグラウンド タスクでサーバーにクエリを実行するなど、貴重なリソースを消費するサービスを停止することが考えられます。
明確にするために、バックグラウンドアプリの定義(私が見ているように)は次のとおり
です。そのアクティビティのどれもonStart()
メソッドを呼び出しておらず、まだonStop()
メソッドを呼び出していないアプリケーションです。これは、その時点でのみアクティビティがそのライフ サイクルでユーザーに表示されるためです。
一方、
Google は、アプリケーションがホーム ボタンに反応することを望まないようです (これは API の一部ではありません)。
onBackPressed()
「ルート/メイン」アクティビティに反応することは、Activity
確かに良い考えではありません(多くのユーザーが戻るボタンではなくホームボタンを使用しているため)APIには、アプリがフォアグラウンドかどうかを判断できるメソッドはありません(私の定義によると..)
API で何かを見逃していなければ、実際にそうです -アプリケーションがフォアグラウンドかどうかを簡単に判断する理由がないのはなぜですか????!!!!
アプリケーションがフォアグラウンドかどうかを判断するために私ができることは、このスレッドで説明されています - Android アプリがバックグラウンドに移行してフォアグラウンドに戻るタイミングを検出する方法
しかし、@Emilが言っているように-特別な許可が必要であるか、維持するのに非常に急速に問題になるトリッキーなロジックが必要であり、悪いアプローチのように思えます(ただし、それは私が今のところ行っていることですが、より良いアイデアがないため. ..)
私の質問は基本的に次のとおりです。
正当な理由からそのような API メソッドはありませんか?
アプリケーションがフォアグラウンドかどうかを考慮するのは悪いアプローチですか?
アプリケーションがフォアグラウンドかどうかを知る他の方法はありますか?