ゲームサーバーへのソケット接続を維持するサービスがあります。ゲームはサーバーとの頻繁な双方向通信を必要とするため、アプリがフォアグラウンドである限り、この接続を開いたままにしておく必要があります。ただし、接続を開いたままにしておくとバッテリーを大量に消費するため、アプリがフォアグラウンドを離れる (つまり、ユーザーがホーム画面に戻る) とすぐに接続を切断します。
これでほぼ問題なく動作しますが、いくつかの小さな問題が発生しています。ゲームがアクティビティを (好みのアクティビティなどに) 変更するたびに、接続が切断されます。これで、各アクティビティで onPause の接続を切断し、これを担当するサービスを開始することができますが、不必要な切断と再接続が発生するため、最適とは言えません。サービス停止を onStop メソッドにバインドすることも、ユーザーがゲームを離れた後も接続が長く維持されるため、最適とは言えません。
私たちが探しているのは、最初のアクティビティが開始された直後のある時点でサービスを開始し、アプリケーションがフォアグラウンドにある限りそのサービスを実行し続ける方法です。ユーザーがアプリケーションを離れるとすぐに、サービスをシャットダウンします。