2

ゲームサーバーへのソケット接続を維持するサービスがあります。ゲームはサーバーとの頻繁な双方向通信を必要とするため、アプリがフォアグラウンドである限り、この接続を開いたままにしておく必要があります。ただし、接続を開いたままにしておくとバッテリーを大量に消費するため、アプリがフォアグラウンドを離れる (つまり、ユーザーがホーム画面に戻る) とすぐに接続を切断します。

これでほぼ問題なく動作しますが、いくつかの小さな問題が発生しています。ゲームがアクティビティを (好みのアクティビティなどに) 変更するたびに、接続が切断されます。これで、各アクティビティで onPause の接続を切断し、これを担当するサービスを開始することができますが、不必要な切断と再接続が発生するため、最適とは言えません。サービス停止を onStop メソッドにバインドすることも、ユーザーがゲームを離れた後も接続が長く維持されるため、最適とは言えません。

私たちが探しているのは、最初のアクティビティが開始された直後のある時点でサービスを開始し、アプリケーションがフォアグラウンドにある限りそのサービスを実行し続ける方法です。ユーザーがアプリケーションを離れるとすぐに、サービスをシャットダウンします。

4

1 に答える 1

1

アプリがフォアグラウンドにあるとき (つまり、アプリのアクティビティの 1 つが表示されているとき) にのみ実行する必要がある場合は、実際にはサービスは必要ありません。接続マネージャー クラスをシングルトンにし、ここで説明されているように、それを使用しているアクティビティの数を数えます: https://groups.google.com/forum/#!msg/android-developers/yxOzuMGlcSo/yd-pkau0zzAJ

Android のサービスは、UI なしで実行する必要がある場合に使用されるため、ユースケースにはあまり適していません。

于 2012-05-14T06:28:54.887 に答える