私はAndroidアプリを持っています。私にはボタンがある主な活動があります。ボタンをクリックすると、別のアクティビティがフォアグラウンドに表示されます。つまり、サーバーから更新をポーリングするバックグラウンドスレッドを実行したいのです。しかし、アプリがフォアグラウンド(主なアクティビティまたは2番目のアクティビティのいずれか)にある場合にのみ実行し、ユーザーがメインボタンをクリックしたり、メインアクティビティから戻るまで戻るボタンをクリックしたときにポーリングを停止する必要があります。Androidアプリがフォアグラウンドの間にスレッドを実行する
しかし、アプリがまだフォアグラウンドにあるかどうかはどうすればわかりますか?私は主なアクティビティのonPauseをキャッチすることができますが、2番目のアクティビティを開始するときにも呼び出されます。
アプリのバックグラウンドはいつわかりますか?
おかげ
私はonResumeで+1を呼び出し、onPauseで-1を呼び出したとしましょう。つまり、最初のonPauseが2番目のonResumeの前に呼び出されているため、refカウントは0になりませんか?おそらく、アプリケーションとアクティビティを組み合わせた既知のデザインパターンがあると思いましたか?また、サービスはどのように役立つでしょうか?私はまだアプリケーションがフォアグラウンドであるかどうかを知りたいです... –
この解決策は近いですが、動作しません:アクティビティAがアクティビティBを開始し、BをクリックしてBをクリックすると同じように見えます:それはAのonResumeを最初に呼び出すことなくBのonPauseを呼び出します。 –
もう1つの問題:アクティビティAがアクティビティBを開始します.Cが開始します.AはonResumeで+1を行い、次にstartActivityの前にB(+2) onPauseで1。 Cの場合と同じですが、今度はrefCountで+ 1のフォアグラウンドでCになっています。ユーザーがクリックすると、refCountの0でBに戻ります –